Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.04.2011, 21:06
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 1  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
По умолчанию Отправить "захватывающее" событие.

Мы все отлично знаем как сделать событие всплывающим. А есть ли способ отправить событие вниз, то есть в captureFase? Если в EventDispatcher - нет, то как такое можно реализовать?
__________________
ranga

Старый 19.04.2011, 21:27
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Не-а. Capture phase для мышки.
Реализовать... гхм )
Вообще разница бублик фазы и каптёрки в порядке триггеров хэндлеров (ну, и мелочей в самом Event`е). Бублы реализовать можно, унаследовався от EventDispatcher и сделав повторный dispatchEvent по всем parent`ам. Чтобы сделать каптюр нужно инвертировать порядок триггеров. В принципе надо создать свой "самый-корневой" StageEventDispatcher и передать на него ссылку каждому CompositeEventDispatcher (ведь DisplayObject имеют ссылку на stage. Находишь интересным?). При вызове dispatchEvent у любого CompositeEventDispatcher вызывать customDispatchEvent у StageEventDispatcher, внутри которого формировать цепочку объектов вложенности - от StageEventDispatcher до target`а. После дёрнуть dispatchEvent у каждого в прямом направлении, а потом в обратном.
Но вообще я бы использовал приоритеты
Кстати, для мышки или для всех input device`s? Можно поймать Keyboard Event в capture фазе?


Последний раз редактировалось Psycho Tiger; 19.04.2011 в 21:34.
Старый 20.04.2011, 13:48
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 3  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
Можно поймать Keyboard Event в capture фазе?
На сколько я знаю - нет. Причина: кода ты клэцаешь мышой, событие захватывает ту область над которой у тебя мышка. На клаве понять кому именно отправлять евент не понятно. Думаю евент сразу же всплывает от объекта у которого сейчас фокус.

Цитата:
Бублы реализовать можно, унаследовався от EventDispatcher и сделав повторный dispatchEvent по всем parent`ам.
Тогда будут проблемы с таргетом. Решения:
1 - сохранять перед диспатчем таргет в статический стек, а потом вынимать (не знаю сработает ли)
2 - при диспатче передавать таргет в конструктор евента.
3 - сделать для события "оболочку".

Но мне ни один из данных подходов не нравится, по этому я написал свой EventDispatche с нуля. Благо адобовцы создали IEventDispatcher. Пока вроде траблов нет =)
__________________
ranga

Старый 20.04.2011, 14:24
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Причина: кода ты клэцаешь мышой, событие захватывает ту область над которой у тебя мышка. На клаве понять кому именно отправлять евент не понятно.
У клавы есть такая вещь как фокус.
Цитата:
Тогда будут проблемы с таргетом. Решения:
1 - сохранять перед диспатчем таргет в статический стек, а потом вынимать (не знаю сработает ли)
2 - при диспатче передавать таргет в конструктор евента.
3 - сделать для события "оболочку".
Для реализации 2 всё равно придется использовать свою оболочку, т.е. 2 и 3 одно и то же.
Погляди на то, как это делает дядька Блуд.

P.S. можно посмотреть на твою реализацию?

Старый 20.04.2011, 14:55
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 5  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
У клавы есть такая вещь как фокус.
Смотри выше

Цитата:
Думаю евент сразу же всплывает от объекта у которого сейчас фокус.
**********

Цитата:
Погляди на то, как это делает дядька Блуд.
то же самое:

Цитата:
3 - сделать для события "оболочку".

Цитата:
Для реализации 2 всё равно придется использовать свою оболочку
Почему?

Цитата:
P.S. можно посмотреть на твою реализацию?
Я ща фрейм в порядок приведу, залью на google code, а потом уже лучше покажу. Ок?

Добавлено через 6 минут
ПС: под оболочкой я имею ввиду не обвертку, а контейнер.
__________________
ranga

Старый 20.04.2011, 15:22
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
capture происходит так:
собираются родители в массив, и пробегаются в нужном порядке. потом наступает bubble и массив пробегается в другую сторону.

Старый 20.04.2011, 15:30
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 7  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
BlooDHounD, вот теперь понял) Оказываеться, я не правильно понимал саму суть capture fase. Спасибо!
__________________
ranga

Старый 20.04.2011, 17:58
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Сообщение от incvizitor Посмотреть сообщение
BlooDHounD, вот теперь понял) Оказываеться, я не правильно понимал саму суть capture fase. Спасибо!
Блин, я написал то же самое.
Цитата:
Вообще разница бублик фазы и каптёрки в порядке триггеров хэндлеров (ну, и мелочей в самом Event`е).
Цитата:
После дёрнуть dispatchEvent у каждого в прямом направлении, а потом в обратном.
Последнее время, почему-то, люди меня с трудом понимают

Цитата:
Смотри выше
Да, не заметил, извиняй )

Старый 20.04.2011, 18:03
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 9  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Psycho Tiger, вообще я понял написаное тобой, но только после того как прочитал пост 6 =)
__________________
ranga

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:20.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.