import { director } from "cc"; export class EventManager { /**添加一个全局监听 * @param eventName 事件名 * @param event 事件Function * @param target 添加监听事件的脚本this */ public static addListener(eventName: string, event: any, target: any) { director.on(eventName, event, target); }; /** * 移除一个监听事件 * @param {*} eventName 事件名 * @param {*} event 事件Function * @param {*} target 添加监听事件的Node */ public static removeListener(eventName: string, event: any, target: any) { director.off(eventName, event, target); }; /** * 派发一个事件 令所有监听此事件的Node执行事件 * @param {*} eventName 事件名 * @param {*} arg1 传递的参数1 * @param {*} arg2 传递的参数2 * @param {*} arg3 传递的参数3 * @param {*} arg4 传递的参数4 * @param {*} arg5 传递的参数5 */ public static dispatchEvent(eventName: string, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) { director.emit(eventName, arg1, arg2, arg3, arg4, arg5); }; /** * 移除 Node 上的所有事件 * @param {*} target 需要移除事件的Node */ public static removeListenerForTarget(target: any) { director.targetOff(target); }; }; export enum EventData { /** 开始游戏 */ START_GAME = "START_GAME", /** 复活 */ REIVE_GAME = "REIVE_GAME", /**加金币 */ AddCoin = "AddCoin", /**加生命 */ AddLife = "AddLife", /** 预制体分帧加载开始 */ PREFAB_LOAD_START = "PREFAB_LOAD_START", /** 预制体分帧加载进度更新 */ PREFAB_LOAD_PROGRESS = "PREFAB_LOAD_PROGRESS", /** 预制体分帧加载完成 */ PREFAB_LOAD_COMPLETE = "PREFAB_LOAD_COMPLETE", }