Всем привет.
Есть класс BlackList, Slide, Moderation.
Внутри Slide по нажатию на кнопку вызываю метод в BlackList, в котором диспатчится событие.
Это событие хочу ловить в этом же классе Slide и в Moderation для дальнейшей обработки. Для этого в Slide и в Moderation создан экземпляр класса BlackList со слушателями.
Почему событие может не ловиться внутри Moderation? (догадки пока, что в каждом созданном экземпляре BlackList события независимы друг от друга..)
Для наглядности набросал пример:
Главный класс Main
Код AS3:
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'); // этот обработчик события не срабатывает
}
}
}
Дочерний класс Window, который вложен в Main
Код AS3:
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
Код AS3:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class List extends EventDispatcher
{
public static const CHANGE:String = 'change';
public function List()
{
}
public function add():void {
dispatchEvent(new Event(CHANGE));
}
}
}
Почему не получается поймать событие в главном классе Main ?? Потому что событие закреплено на уровне каждого экземпляра, а не на уровне класса List?