Обработка события мыши на объектах неправильной формы с делегированием события - PullRequest
2 голосов
/ 06 января 2012

Мне нужно обрабатывать события мыши на странице, где несколько объектов неправильной формы (например, дома) сложены друг на друга. Если я использую обычный способ делегирования события jQuery .on (), источник события, о котором сообщают, всегда будет самым верхним объектом, даже если пользователь нажал на прозрачную часть объекта (или изображение).

Пример: тег, содержащий красный треугольник, всегда будет источником события, даже если я нажму на позицию X. Example

Я могу обнаружить, что щелчок мыши находится не внутри треугольника. Что мне нужно, так это способ "переслать" событие в зеленый треугольник ниже.

РЕДАКТИРОВАТЬ: Мой текущий подход заключается в том, чтобы перехватывать события в большом div, который охватывает все, затем использовать селектор jQuery и сравнивать координаты, чтобы выяснить, какой объект находится под мышью, а затем проверить, находится ли мышь в прозрачной части или нет. Он работает нормально, но кажется медленным и потребляет много памяти, особенно при непрерывном запуске событий перемещения мыши.

РЕДАКТИРОВАТЬ 2: Это изображение было извлечено из Сборка игрового движка с jQuery , и мой подход был почти таким же. А теперь вот вопрос: enter image description here

1 Ответ

0 голосов
/ 14 января 2012

Вы рисуете сложную графику, используя простые элементы HTML?Не уверен насчет ваших точных потребностей, но, возможно, имеет смысл использовать SVG или Canvas, где отлавливать события нажатия на фигуры становится намного проще.

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