2016-02-03 1 views
0

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

Когда я определяю в контейнере hitArea, его дети больше не получают события мыши - они отправляются в контейнер вместо этого. Однако без hitArea Я не могу обнаружить щелчок в области контейнера.

скрипки, иллюстрирующая проблема:

Единственный solution я подошел к тому, чтобы использовать hitArea и на каждом случае убедитесь, что нет ребенка в контейнере на который он может быть отправлен. Однако этот подход очень раздражает: мне придется поймать все типы событий мыши, несмотря на мой интерес к ним на уровне контейнеров.

Есть ли простое решение для этого случая?

ответ

0

я решил использовать другой обходной путь - я создал DisplayObject, указанный hitArea для него, и добавить его в качестве первого ребенка к Container, недостатком является то, что я должен определить обработчики событий как на этом hitArea-объекта и Контейнер. Но это требует гораздо меньше работы, чем другие решения, которые я нашел.

Обновлено fiddle.

+0

Использование дочернего элемента для остальной части hitArea - это, безусловно, правильный подход, но вы можете просто слушать «контейнер» и проверять «event.target», чтобы определить, что было поражено, а не иметь множественное событие слушатели. 'if (event.target == circle) {doSomething(); } ' – Lanny

+0

@ Lanny, спасибо за ваш ответ, но я проверил его, и он не работает, я чего-то не хватает: http://jsfiddle.net/rs462n76/7/? – user3707125

+0

Если вы установили hitArea, мышки игнорируются (это будет дизайн). Используя ваш второй подход (другой ребенок, размер которого вам нужен), вы можете проверить цель, чтобы увидеть, что было нажато. Некоторые незначительные изменения в вашей скрипке, с комментариями в строке. http://jsfiddle.net/rs462n76/8/ – Lanny