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

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

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Arrow Непонятки с dispatchEvent и useCapture

Пытаюсь проделать банальную весчь:

Код AS3:
this.addEventListener("SHOW_HELP", showHelpHendler,true,0,true);
this.dispatchEvent(new Event("SHOW_HELP"));
 
private function showHelpHendler(e:Event):void
{
	trace("Show Help " + e.target);
}
почему функция перестаёт вызываться, если я включаю useCapture? Без useCapture работает.

Старый 23.11.2011, 16:40
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
capture фаза существует только для дисплейных объектов. Допустим у нас есть спрайт, в нем еще один, а в нем мувик. И мы кликаем по мувику. Сначала идет фаза захвата - событие спускается от спрайта к еще одному. Потом target фаза - это когда событие попало в мувик. Потом bubbling фаза, когда событие вновь начинает подниматься от мувика к вложенному спрайту и затем к внешнему.
Когда Вы ручками диспатчите событие - оно сразу начинает с таргет-фазы
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 23.11.2011 в 16:48.
Старый 23.11.2011, 17:08
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 3  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
почему тогда если я делаю подписку не на this, а на stage - всё работает
Код AS3:
this.addEventListener("SHOW_HELP", showHelpHendler,true,0,true);
this.dispatchEvent(new Event("SHOW_HELP"));
 
private function showHelpHendler(e:Event):void
{
	trace("Show Help " + e.target);
}
и какой вообще выход, использовать баблинг?
Код AS3:
this.dispatchEvent(new Event("SHOW_HELP", true));

Старый 23.11.2011, 17:50
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Так с этого и нужно начинать - какого эффекта нужно добиться?
__________________
...вселенская грусть

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
есть функция вызова всплывающего окна. Окно всегда вызывается в главном классе, "просят" же о том чтобы вызвать это окно кто попало, по сути это может сделать любое другое окно приложения. Задача состоит в том чтобы главный класс услышал молебный диспатч каждого и вызвал функцию showHelp, и что важно с учётом того что он сам у себя может попросить это окно, т.е this.dispatchEvent....

Добавлено через 1 минуту
последнее конечно бред, но всё таки, интересно почему именно диспатч в самом себе не даёт желаемого эффекта

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

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
А не проще сделать в основном классе статическую функцию, и обращаться к ней? или сделать главный класс Singleton?
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну исходя из предлогаемых вариантов - тут нужен bubbling. Так как нам нужно от внуков достучаться до дедушки. То есть подняться вверх. Фаза захвата - это как раз процесс опускания события вниз, и оно тут незачем.
__________________
...вселенская грусть

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
но суть то не меняется...какая вообще разница, чисто практически, на каком этапе ловить событие, на этапе погружения или на этапе всплытия?

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
При всплытии событие клонируется. При всплытии его уже обработали все ктохотел это сделать на этапе погружения
__________________
...вселенская грусть

Старый 24.11.2011, 03:13
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 10  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от Universe Посмотреть сообщение
почему функция перестаёт вызываться, если я включаю useCapture? Без useCapture работает.
Цитата:
useCapture:Boolean (default = false) — Determines whether the listener works in the capture phase or the target and bubbling phases. If useCapture is set to true, the listener processes the event only during the capture phase and not in the target or bubbling phase. If useCapture is false, the listener processes the event only during the target or bubbling phase.
Т.е. если ваш this это элемент display list'а и он выбрасывает событие, то это событие на нём будет в фазе EventPhase.AT_TARGET, которая не ловится через useCapture

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

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

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


 


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


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