|
|
|||||
Общее событие
Всем привет.
Есть класс BlackList, Slide, Moderation. Внутри Slide по нажатию на кнопку вызываю метод в BlackList, в котором диспатчится событие. Это событие хочу ловить в этом же классе Slide и в Moderation для дальнейшей обработки. Для этого в Slide и в Moderation создан экземпляр класса BlackList со слушателями. Почему событие может не ловиться внутри Moderation? (догадки пока, что в каждом созданном экземпляре BlackList события независимы друг от друга..) Для наглядности набросал пример: Главный класс Main package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { private var _window:Window; private var _list:List; public function Main() { _window = new Window(); addChild(_window); _list = new List(); _list.addEventListener(List.CHANGE, onChangeList); } private function onChangeList(event:Event):void { trace('Main > LIST CHANGED'); // этот обработчик события не срабатывает } } } package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Window extends Sprite { private var _btn:Sprite; private var _list:List; public function Window() { _btn = new Sprite(); _btn.graphics.beginFill(0x0000FF); _btn.graphics.drawRect(0,0,50,50); _btn.graphics.endFill(); _btn.x = _btn.y = 20; addChild(_btn); _btn.addEventListener(MouseEvent.CLICK, onClickBtn); _list = new List(); _list.addEventListener(List.CHANGE, onChangeList); } private function onClickBtn(event:MouseEvent):void { _list.add(); } private function onChangeList(event:Event):void { trace('Window > LIST CHANGED'); // здесь срабатывает } } } И класс List, который генерит событие при нажатии на кнопку внутри Window Почему не получается поймать событие в главном классе Main ?? Потому что событие закреплено на уровне каждого экземпляра, а не на уровне класса List?
__________________
кто не отвечает, того garbage collector забирает Последний раз редактировалось djken; 18.05.2020 в 18:51. Причина: добавил пример скрипта |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Экземпляр Moderation находится в DisplayList?
__________________
Reality.getBounds(this); |
|
|||||
Wolsh, добавил в вопросе пример скрипта для наглядности. Почему в классе Main не отлавливается событие?
__________________
кто не отвечает, того garbage collector забирает |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Смею предположить, что у тебя List в Main и List в Window, это два разных объекта. List из main, ничего не знает о list из Window, который вызывает add и ловит событие.
|
|
|||||
Godwarlock, понял, спасибо.
В целом разобрался. Решил сделать так: при инициализации приложения в модели, где хранятся все данные в статических переменных, создать объект класса List. И везде, где нужно подписаться на его события, создаю экземпляр List ссылающийся на List из модели. Все работает
__________________
кто не отвечает, того garbage collector забирает Последний раз редактировалось djken; 19.05.2020 в 04:00. |
Часовой пояс GMT +4, время: 10:29. |
|
« Предыдущая тема | Следующая тема » |
Теги |
события |
|
|