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

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

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Это... как бы вам сказать - фишка в том, что вы не можете отменить capture фазу, и ни про какие подписывания на события внутри класса речь не идет. Банальная ситуация - положили кнопку "Закрыть" на форму. Подписались на событие и смело думаем, что кнопка "Закрыть" всегда нашу форму и закроет. А тут откуда ни возьмись - вундеркинд типа MATE / Swiz - взял ваше событие от кнопки и тупо остановил до того, как оно пришло получателю, который форму должен был закрыть. Вы сидите, клацаете по кнопке - а она ничего не делает - комфортно? А предотвратить / предвидеть? - А не сможете, т.как вундеркинд подписавшийся после вас получит событие первым. И вообще, читайте про вред глобального доступа / глобальных переменных и всего такого - это одного поля ягода.
__________________
Hell is the possibility of sanity

Старый 16.04.2010, 02:51
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 22  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Родитель должен позаботиться о Ваших детях! Он должен сообщить непослушному ребёнку ссылку на кнут, чтобы тот прислушался к нему и больше не шалил)

Что то-типа метода attachDispatcher(dispatcher:IEventDispatcher):void;

Старый 19.04.2010, 23:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 23  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Банальная ситуация - положили кнопку "Закрыть" на форму. Подписались на событие и смело думаем, что кнопка "Закрыть" всегда нашу форму и закроет.
Ну как бы всегда и закроет. А в чем подвох?

Не тестил стоп пропагейшн на капчур фазе ) Опять нет повода не выпить.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 20.04.2010 в 00:00.
Старый 20.04.2010, 03:56
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 24  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Там достаточно просто чтобы в хендлере была какая-нибудь ошибка пойманая в другом месте, и планы по захвату мира накроются медным тазом.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
А я не понимаю вообще событийную модель. Произошел клик по кнопке - событие со stage понеслось вниз, до виновника торжества - это capture фаза. Если её поймать - то беда, можно виновнику не узнать, что он виновник. Ну хорошо, бабблинг фаза всплывает и вызывает обработчики и у всех тех, кого пометила capture фаза. А вторая фаза на кой?

Старый 20.04.2010, 18:33
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 26  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну можно это представить так:
стейдж - единственный, кто регистрирует на события, т.е. все клики происходят на стейдже.
далее, стейдж идет по видимому дереву объектов и проверяет, а является ли объект интерактивным, а находится ли он в зоне клика.
вот это и будет фаза "захвата" события.
Когда у объекта не остается интерактивных детей удовлетворяющих условию положения мыши, при том, что этот объект является верхним с точки зрения Z-индекса, то он назначается целью события - это и будет фаза "цель".
Ну и дальше это событие опять раздается всем объектам-родителям и прародителям целевого объекта - это фаза "всплытия".
По идее, фазу захвата вообще-то лучше было бы спрятать, именно потому, что если этот процесс остановить, то целевой объект может не получить событие. Но тут опять же есть подводные камни - иногда хочется одним махом запретить получать мышиные события всем элементам, или, если не запретить, то остановить - ну те же модальные окна, например. Ну и тут же спорный вопрос, а на сколько приложение в праве решать что делать стейджу, т.е. а хорошо ли это, если какое-нибудь загруженое приложение сможет следить за логикой событий загрузившего приложения и т.п. Не знаю, я не думаю, что тут возможен однозначный ответ, но, мне кажется, что запрещать по умолчанию с возможностью разрешить, если потребуется был бы оптимальный вариант.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Да спасибо, это я понимаю. Мне не понятно, зачем фаза цель нужна.
Мы углубились, потом всплыли и всем рассказали...

Старый 20.04.2010, 20:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 28  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Возможно чтобы не делать:
Код AS3:
event.currentTarget && event.currentTarget === event.target
а вместо этого:
Код AS3:
event.phase === EventPhase.TARGET
А вообще - не знаю, как-то не приходилось пользоваться
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Код AS3:
event.currentTarget && event.currentTarget === event.target
Что, прости? UPD: а, тьфу. Голова нарисовала скобки вот так:
Код AS3:
(event.currentTarget && event.currentTarget) === event.target
и в голове каша случилась )

Да, та же ерунда - не приходилось сталкиваться поэтому и не знаю )

Я так понимаю, что EventPhase.TARGET может быть только у виновника события, все остальные получат EventPhase.BUBBLING, ну некоторые при желании ещё и capture фазу, верно?

Старый 22.04.2010, 02:22
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 30  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Я так понимаю, что EventPhase.TARGET может быть только у виновника события, все остальные получат EventPhase.BUBBLING, ну некоторые при желании ещё и capture фазу, верно?
Пример с текстовым полем, дитем спрайта. addEventListener'ом озадачиваем спрайт. Кликаем по текстовому полю. Вопрос. Произойдет ли в листенере спрайта, что
Код AS3:
event.phase == EventPhase.AT_TARGET;
?

Добавлено через 11 минут
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Там достаточно просто чтобы в хендлере была какая-нибудь ошибка пойманая в другом месте, и планы по захвату мира накроются медным тазом.
Олег, я подписываюсь (сторонним объектом) на capture phase, и в его хендлере генерю RTE. Правильно я понял?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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