The built in event system does not include a "broadcast" functionality. But you can pretty easily build one yourself by making a single instance to dispatch your events.
Then you can register a listener from anywhere:Code:public class Broadcaster extends EventDispatcher { private var _instance:Broadcaster = null; //DO NOT USE THIS. Use static methods broadcastEvent and addBroadcastListener instead public function Broadcaster(){ if (_instance != null){ throw new IllegalOperationError("Broadcaster constructor called more than once"); } } private static getInstance():Broadcaster{ if (null == _instance){ _instance = new Broadcaster(); } return _instance; } public static broadcastEvent(event:Event):void{ getInstance().dispatchEvent(event); } public static addBroadcastListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{ getInstance().addEventListener(type, listener, useCapture, priority, useWeakReference); } }
And trigger dispatch from anywhereCode:Broadcaster.addBroadcastListener("someEvent", somehandler);
Code:Broadcaster.broadcastEvent(new Event("someEvent"));




Reply With Quote
