private var _listeners:Object = {};
public function Broadcaster(){
}
public function addEventListener(eventName:String, listenerObj:Object, methodName:String):Void{
if(_listeners[eventName] == undefined){
_listeners[eventName] = new Array();
}
_listeners[eventName].push({listenerObj:listenerObj, methodName:methodName});
}
public function broadcastEvent(eventName:String, data:Object):Void{
var eventQueue:Array = new Array();
for(var i:Number = (listeners.length - 1); i >= 0; i--){
var method:String = eventName;
if(_listeners[eventName][i].methodName != undefined){
method = _listeners[eventName][i].methodName;
}
eventQueue.push({listenerObj:_listeners[eventName][i].listenerObj, method:method})
}
for(var i:Number = (listeners.length - 1); i >= 0; i--){
eventQueue[ii].listenerObj[eventQueue[ii].method](data);
}
}
public function removeEventListener(eventName:String, listenerObj:Object, methodName:String):Void{
if(_listeners[eventName] == null){ return; }
var listeners:Array = _listeners[eventName];
for(var i:Number = (listeners.length - 1); i >= 0; i--){
if(listeners[i].listenerObj == listenerObj && listeners[i].methodName == methodName){
_listeners[eventName].splice(i, 1); //splice the member, not the local copy
return;
}
}
}
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|👍
/👎
0 B
|👍
/👎