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

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

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

Регистрация: Mar 2009
Сообщений: 30
По умолчанию Не могу поймать событие потомка

привет всем. есть программа со следующей структурой, в которой не получается поймать событие "напрямую", а только "событие на цепочке".

Main.as
- Control.as
- - Display.as
- - - Child.as

Объект Main добавляет Control на сцену, Control добавляет Display и Display добавляет Child.
Пытаюсь из Control перехватить событие объекта Child следующим образом:

Код AS3:
Display.Child.addEventListener(Child.OK, func);
если в Child выслать событие с bubbles = true, то всё работает.
в Display событие из Child в любом случае ловлю на ура....

Код AS3:
Child.addEventListener(Child.OK, func);
в чем может быть ошибка?

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

Регистрация: May 2010
Сообщений: 543
Я тоже не пойму, в чем проблема.
Во-первых, "событие на цепочке" - на самом деле, вы просто получили ссылку самого объекта, посылающего событие. То есть это как бы и есть "напрямую".

Вот-вторых
Цитата:
если в Child выслать событие с bubbles = true, то всё работает.
Ну ведь так и должно быть. Вы говорите всем: "Я ограбил банк". с bubbles = false, об этом узнают, только те, кто слушал вас. С bubbles = true об этом смогут узнать все, кто слушает тех, кто слушает тех...., кто слушает вас.

То есть событие всплывает
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 07.01.2012, 23:00
ded100let вне форума Посмотреть профиль Отправить личное сообщение для ded100let Найти все сообщения от ded100let
  № 3  
Ответить с цитированием
ded100let

Регистрация: Mar 2009
Сообщений: 30
нашел причину! в конструкторе каждого потомка стояло следующее:

Код AS3:
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
Это приводило к тому, что метод init запускался дважды. Собственно это и было проблемой.
изменил на:

Код AS3:
if (stage) init();
else addEventListener(Event.ADDED, init);

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
в ините надо было отписываться от события
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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