class com.buho.core.Event { private var _objEvent:Object; private function Event(){ _objEvent = new Object(); } public function addListener(type:String,obj:Object){ if(_objEvent[type]==null) _objEvent[type]=new Array(); _objEvent[type].push({type:type,obj:obj}); } public function removeListener(str:String,obj:Object):Boolean{ for(var i=_objEvent[str].length-1;i>-1;i--){ var objReal = _objEvent[str][i].obj ; if(obj==objReal) { _objEvent[str].splice(i,1); return true; } } return false ; } private function callEvent(str:String){ for(var i=_objEvent[str].length-1;i>-1;i--){ var obj:Object = _objEvent[str][i].obj ; var type:String = _objEvent[str][i].type ; var argument = {type:type,target:this}; if(obj instanceof Function) obj.apply(this,[argument]); else obj[type](argument); } } public function removeEventAll(){ _objEvent = new Object(); } function toString(){ return "Event"; } }