📄 eventdispatcher.as
字号:
import com.yahoo.core.CoreObject;
import com.yahoo.event.EventObserver;
import com.yahoo.event.Event;
/**
*
* @see CoreObject
*/
class com.yahoo.event.EventDispatcher extends CoreObject{
private var $eventObserverMap:Object;
public function EventDispatcher(Void){
super();
this.setClassDescription('com.yahoo.event.EventDispatcher');
this.$eventObserverMap = new Object();
}
public function get eventObserverMap():Object
{
return this.$eventObserverMap;
}
public function addEventObserver():Void{
// check to see if the listeners object has a list of
// listeners for the event id eID. If not, create one.
var lObj = arguments.shift();
var eID:String;
var len:Number = arguments.length;
var count:Number = 0;
while(count<len){
eID = arguments[count];
if(typeof this.$eventObserverMap[eID] != "object"){
this.$eventObserverMap[eID] = new Array();
}
if(!this.hasEventObserver(this.$eventObserverMap[eID], lObj)){
this.$eventObserverMap[eID].push(new EventObserver(lObj, eID));
}
count++;
}
}
/**
*
* @param lObj
* @param eID
*/
public function removeEventObserver(lObj:Object, eID:String):Void{
var list:Array = this.$eventObserverMap[eID];
var len:Number = list.length;
if(len < 1) return;
while(len--){
if(list[len].getListeningInstance() == lObj){
list.splice(len, 1);
return;
}
}
}
/**
*
* @param eID
*/
public function removeAllEventObservers(eID:String):Void{
if(typeof eID == "string"){
delete(this.$eventObserverMap[eID]);
}else{
delete(this.$eventObserverMap);
}
}
/**
*
* @param e
* @param sender
*/
public function dispatchEvent(e:com.yahoo.event.Event, sender){
var eID:String = e.getType();
// trace('event dispatcher:dispatchEvent: '+eID)
e.setSender(sender);
var list:Array = this.$eventObserverMap[eID];
var len:Number = list.length;
if(len < 1)
{
// trace('event dispatcher:No observers!')
return;
}
var i:Number = 0;
while(len--)
{
//this.trace('list[i]: '+list[i].getListeningInstance());
list[i].callMethod(eID, e);
i++;
}
}
// Helpers
private function hasEventObserver(list:Array, lObj:Object):Boolean{
var len:Number = list.length;
while(len--){
if(list[len].getListeningInstance() == lObj) return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -