export class EventCenter {
//定义数据类型
static events:Map<string,Array<EventHander>> = new Map<string,Array<EventHander>>();
//注册
static registEvent(eventName:string,target:object,func:Function):void {
if(eventName == undefined || target == undefined || func == undefined) {
throw Error("regist event error");
return;
}
if(EventCenter.events[eventName] == undefined) {
EventCenter.events[eventName] = new Array<EventHander>();
}
let hander = new EventHander(target,func);
EventCenter.events[eventName].push(hander);
}
//触发
static postEvent(eventName:string,param?:any)void {
let handers = EventHander.events[eventName];
if(handers == undefined) {return};
for(let i = 0 ; i< handers.length;i++) {
let hander = handers[i];
if(hander) {
try {
hander.func.call(hander.target,param);
}catch(e) {
console.log(e.message);
console.log(e.stack.toString());
}
}
}
}
}
export class EventHander {
target:object; //执行对象
func:Function; //执行函数
constructor(target:object,func:Function) {
this.target = target;
this.func = func;
}
}