Можно ли обнаружить щелчки на разных частях элемента canvas? - PullRequest
0 голосов
/ 18 июня 2011

Предположим, внутри элемента canvas у меня есть холст и прямоугольник на холсте, и я хочу использовать щелчки на обоих элементах, чтобы делать разные вещи.Можно ли различить эти два клика?

Ответы [ 4 ]

2 голосов
/ 18 июня 2011

Другим способом сделать это является использование теневого (т.е. не отображаемого) холста. На этом холсте вы рисуете маски форм из настоящего холста разных цветов.

Затем вы проверяете цвет пикселя на теневом холсте и можете определить, какой объект был нажат в «реальном».

1 голос
/ 18 июня 2011

Да, но я не думаю, что существует какая-либо существующая функциональность для этого. По сути, вы хотите отслеживать фигуры, которые вы нарисовали (как правило, отслеживая их координаты вершин), и прикреплять событие щелчка к тому холсту, о котором вы говорите. После того, как событие click запущено, найдите координаты мыши x и y относительно верхнего левого угла холста, а затем выполните итерацию по массиву фигур и проверьте их на пересечение. Реализация этого похожа на трассировку лучей, но сделать это намного проще, поскольку речь идет только о двух измерениях.

Проверьте эту статью на предмет информации о расчете точки в многоугольнике: http://en.wikipedia.org/wiki/Point_in_polygon

1 голос
/ 18 июня 2011

Событие, которое передается обратному вызову onClick, содержит элементы pageX и pageY, для которых установлено местоположение щелчка. Подробнее об этом сообщении в блоге .

0 голосов
/ 19 июня 2011

Я сделал учебные пособия о том, как сделать объекты доступными для выбора на Canvas, если вы ищете, как начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...