![]() |
Диспетчерезация события через EventDispatcher target
Есть иерархия вложенности спрайтов: a.b.c. Создаем экземпляр EventDispatcher и в target передаем спрайт c. Это получается объект, который будет получать события?
Объясните пожалуйста, почему, когда диспатчим событие, спрайт c его не получает? Код AS3:
Цитата:
|
Потому что c диспатчит эвент. Конструктор принимает объект который имплементит IEventDispatcher, но неизвестно если наследует (не наследует) у EventDispatcher (в данном случае в этом конструкторе нет смысла т.к. спрайт наследует). Я так понял из хелпа и пары туманных объяснений :)
Т.е. этот инстанс EventDispatcher цепляется (композиция) к c, в итоге именно c диспатчит эвент. Поправьте если неправ, тоже интересно :) Да, e.target выдаёт [object Sprite], и это именно с (прицепил name, выдаёт его имя). |
Меня больше удивляет сам факт того, что событие таки всплыло. Возможно это просто связано с тем, что target является DisplayObject-ом и поэтому EventDispatcher выполнил бабблинг. Ну а то, что от самого «с» не пришло событие, можно объяснить лишь тем, что у них с «d» не общие списки хендлеров (в силу того, что у него своя реализация IEventDispatcher и он не является реализатором «d» вообще).
|
Мне тяжело понять где это может пригодиться.
Ведь чтобы была польза с этого эвента, чтоб он мог всплывать, target должен быть на сцене - наследовать у DisplayObject'а, который уже наследует у EventDispatcher'a, а значит мы просто будем привязывать EventDispatcher к другому EventDispatcher'у , и тут я смысла не вижу. Просто пытаюсь собрать пример где это может понадобиться, и не получается. А почему событие не должно всплывать? Его же c диспатчит. |
AlexLucas,
И не нужно. Использовать конструктор и передавать в target имеет смысл только объекты, реализующие IE. Как написано в справке адоба, чтобы объект тоже мог получать события. |
Ну, применение странное, безусловно.
|
| Часовой пояс GMT +4, время: 10:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.