![]() |
Отправить "захватывающее" событие.
Мы все отлично знаем как сделать событие всплывающим. А есть ли способ отправить событие вниз, то есть в captureFase? Если в EventDispatcher - нет, то как такое можно реализовать?
|
Не-а. Capture phase для мышки.
Реализовать... гхм ) Вообще разница бублик фазы и каптёрки в порядке триггеров хэндлеров (ну, и мелочей в самом Event`е). Бублы реализовать можно, унаследовався от EventDispatcher и сделав повторный dispatchEvent по всем parent`ам. Чтобы сделать каптюр нужно инвертировать порядок триггеров. В принципе надо создать свой "самый-корневой" StageEventDispatcher и передать на него ссылку каждому CompositeEventDispatcher (ведь DisplayObject имеют ссылку на stage. Находишь интересным?). При вызове dispatchEvent у любого CompositeEventDispatcher вызывать customDispatchEvent у StageEventDispatcher, внутри которого формировать цепочку объектов вложенности - от StageEventDispatcher до target`а. После дёрнуть dispatchEvent у каждого в прямом направлении, а потом в обратном. Но вообще я бы использовал приоритеты :D Кстати, для мышки или для всех input device`s? Можно поймать Keyboard Event в capture фазе? |
Цитата:
Цитата:
1 - сохранять перед диспатчем таргет в статический стек, а потом вынимать (не знаю сработает ли) 2 - при диспатче передавать таргет в конструктор евента. 3 - сделать для события "оболочку". Но мне ни один из данных подходов не нравится, по этому я написал свой EventDispatche с нуля. Благо адобовцы создали IEventDispatcher. Пока вроде траблов нет =) |
Цитата:
Цитата:
Погляди на то, как это делает дядька Блуд. P.S. можно посмотреть на твою реализацию? |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено через 6 минут ПС: под оболочкой я имею ввиду не обвертку, а контейнер. |
capture происходит так:
собираются родители в массив, и пробегаются в нужном порядке. потом наступает bubble и массив пробегается в другую сторону. |
BlooDHounD, вот теперь понял) Оказываеться, я не правильно понимал саму суть capture fase. Спасибо!
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Psycho Tiger, вообще я понял написаное тобой, но только после того как прочитал пост 6 =)
|
| Часовой пояс GMT +4, время: 14:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.