У меня есть специальный класс холста, охватывающий всю мою сцену, и кучу горячих точек Sprite на нижнем слое. Если я помещаю горячие точки на том же слое, что и мой холст, холст не регистрирует события MOUSE_DOWN, если моя мышь находится внутри одной из горячих точек, поскольку вместо этого используются точки доступа. Однако, если я сохраняю горячие точки на нижнем уровне, холст обрабатывает все MouseEvents. Есть ли способ сделать MouseEvents более чем одной целью, так что и холст, и горячие точки реагируют на MouseEvents? (Холст - это класс рисования растрового изображения, и горячие точки должны срабатывать, когда курсор касается их или нажимает на них.)Проблема с Flash/Actionscript: может ли MouseEvents одновременно нацелиться на несколько объектов?
Проблема с Flash/Actionscript: может ли MouseEvents одновременно нацелиться на несколько объектов?
ответ
ActionScript имеет как пузырьки событий, так и захват событий. Это означает, что вы можете прослушивать события, начинающиеся с элементов или элементов для детей. Вам просто нужно создать правильный приемник событий. Захват начинает захватывать события в родительских элементах, когда он перемещается по цепочке дочерних элементов до тех пор, пока не достигнет элемента, в котором было инициировано событие. Событие bubbling начинает прослушивать события у ребенка и переходит к родительскому.
Третий аргумент addEventListener
, useCapture, определяет, хотите ли вы пузыриться или захватывать.
Похоже, вы хотите пузыряться в событиях, поэтому вы хотите установить useCapture в false. Слушатели событий будут инициированы для ребенка и родителя.
apphacker получил это право.
Там через две другие вещи, которые вы могли бы быть заинтересованы:
mouseChildren свойство и метод getObjectsUnderPoint()
удачи
Спасибо! Я немного поиграл с этим, но похоже, что он по-прежнему разрешает только одну цель на событие. Есть ли способ сделать MouseEvent целевой точкой доступа, запустить функцию, а затем перейти к следующему уровню? Если я начну рисовать по одной из горячих точек, холст чертежа не работает. – Archagon
Цель - это элемент или объект, который был нажат. Есть только одна цель, и она доступна в объекте события. Похоже, вы все еще используете захват событий, а не пузырящийся. Если вы используете барботирование событий, он будет делать именно то, что вы хотите, в зависимости от контекста. –
Ах! Понял. Я добавлял горячие точки в качестве детей сцены, а не холста. Спасибо! – Archagon