enum UIGameMsgType {
UINotify_1 = 0,
UINotify_2 = 1,
UINotify_3 = 2,
}
class EventMgr {
constructor() { }
dic = {};
clear(): void {
this.dic = {};
};
/**
*
* @param {GameEventType} gameEventType
* @param {cc.Component} cc
* @param {Function} action
*/
register(gameEventType: UIGameMsgType, cc: cc.Component, action: Function): void {
this.clearSingleRegister(gameEventType);
if (!this.dic[gameEventType]) {
this.dic[gameEventType] = [];
}
this.dic[gameEventType].push({
cc: cc,
action: action
});
};
/**
* 删除无效的节点注册事件
* @param gameEventType 消息类型
*/
clearSingleRegister(gameEventType: UIGameMsgType): void {
if (this.dic[gameEventType]) {
for (let i = this.dic[gameEventType].length - 1; i >= 0; i--) {
if (!this.dic[gameEventType][i].cc.node) {
this.dic[gameEventType].splice(i, 1);
}
}
}
};
notify(gameEventType: UIGameMsgType, obj: any) {
this.clearSingleRegister(gameEventType);
if (this.dic[gameEventType]) {
for (let i = 0; i < this.dic[gameEventType].length; i++) {
if (this.dic[gameEventType][i].cc.node && this.dic[gameEventType][i].cc.node.active) {
this.dic[gameEventType][i].action(this.dic[gameEventType][i].cc, obj);
}
}
}
}
}