Цитата:
Цитата:
Код AS3:
Код AS3:
Код AS3:
|
Цитата:
Код AS3:
|
caseyryan, огромнейшее спасибо за помощь!
|
Наконец-то сел почитать, чтобы разобраться с Событиями досканально - многое прояснил для себя.
Но есть момент, в котором не знаю как правильно поступить: как раз столкнулся на моем примере, когда по совету от caseyryan стал не создавать свое новое событие, а передиспатчивать существующее - dispatchEvent(e). Мне нужно ловить событие клика по спрайту _box, который внутри класса ImageBox. Код AS3:
Код AS3:
Как я понимаю: ImageBox имеет событие click, унаследовав от Sprite. И _box тоже. Подписавшись на событие click у _imageBox - из-за цепочки событий в иерархии отображаемых объектов на фазе захвата происходит диспатч сначала у предка [object ImageBox], а потом и у получателя [object Sprite]. Верно ли понимаю? Вопрос: мне не нужно чтобы onClick срабатывал дважды, т.к. в нем будут производиться какие-либо действия дважды.. Вижу два выхода: 1) в обработчике проверять от кого пришло событие и только после этого выполнять дальнейшие действия. 2) либо все таки в onClickHandler диспатчить свое событие. Подскажите пожалуйста. |
dispatchEvent диспатчит клон события,поэтому перед посылкой оригинальное событие надо остановить через stopImmediatePropogation.
|
От задачи же зависит..
Если вам надо событие клика по КАРТИНКЕ, но к самой картинке доступа нет и добавить ей слушатель нельзя, то придется диспатчить от имени контейнера и тогда да, лучше использовать кастомное событие. То есть обычный Event, но со "своим" строковым типом, который можно объявить константой в классе ImageBox, пусть будет ImageBox.CLICK_IMAGE. Код AS3:
Код AS3:
|
Цитата:
Код AS3:
Код AS3:
Код AS3:
undefined, попробовал stopImmediatePropogation, работает. Но не совсем понимаю, что значит dispatchEvent диспатчит клон? В справке Adobe ничего не нашел про stopImmediatePropogation. Упоминается вскользь... Цитата:
|
Цитата:
Код AS3:
|
undefined, теперь понял! Огромное спасибо за разъяснение!
|
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 11:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.