gameEventManager.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { EVENT_TYPE } from "./gameEnum";
  2. /**事件管理类 */
  3. class GameEventManager {
  4. /**单例 */
  5. private static _instance: GameEventManager = null;
  6. /**获取事件管理器单例 */
  7. static get instance(): GameEventManager {
  8. if (this._instance == null) {
  9. this._instance = new GameEventManager();
  10. }
  11. return this._instance;
  12. }
  13. /**事件类实例 */
  14. private e: cc.EventTarget = null;
  15. constructor() {
  16. this.e = new cc.EventTarget();
  17. }
  18. /**
  19. * 注册事件
  20. * @param type 事件类型
  21. * @param callback 事件回调
  22. * @param target 绑定对象
  23. * @param useCapture 拦截事件
  24. */
  25. on<T extends Function>(type: EVENT_TYPE, callback: T, target?: any, useCapture?: boolean): T {
  26. return this.e.on(type, callback, target, useCapture);
  27. }
  28. /**
  29. * 注销事件
  30. * @param type 事件类型
  31. * @param callback 事件回调
  32. * @param target 绑定对象
  33. */
  34. off(type: EVENT_TYPE, callback: Function, target?: any) {
  35. this.e.off(type, callback, target);
  36. }
  37. /**
  38. * 发送事件
  39. * @param key 事件类型
  40. * @param arg1 参数1
  41. * @param arg2 参数2
  42. * @param arg3 参数3
  43. * @param arg4 参数4
  44. * @param arg5 参数5
  45. */
  46. emit(key: EVENT_TYPE, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any) {
  47. this.e.emit(key, arg1, arg2, arg3, arg4, arg5);
  48. }
  49. }
  50. export default GameEventManager.instance;