86664c55e48906e4b063ded4d7377449dbd996fa.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. System.register(["__unresolved_0", "cc", "__unresolved_1"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, Singleton, _dec, _class, _crd, ccclass, property, EventEmitter, eventEmitter;
  4. function _reportPossibleCrUseOfSingleton(extras) {
  5. _reporterNs.report("Singleton", "../manager/Singleton", _context.meta, extras);
  6. }
  7. return {
  8. setters: [function (_unresolved_) {
  9. _reporterNs = _unresolved_;
  10. }, function (_cc) {
  11. _cclegacy = _cc.cclegacy;
  12. __checkObsolete__ = _cc.__checkObsolete__;
  13. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  14. _decorator = _cc._decorator;
  15. }, function (_unresolved_2) {
  16. Singleton = _unresolved_2.Singleton;
  17. }],
  18. execute: function () {
  19. _crd = true;
  20. _cclegacy._RF.push({}, "eef30aCO4hI0ZvvAJvZaGOD", "EventEmitter", undefined);
  21. __checkObsolete__(['_decorator', 'Component', 'Node']);
  22. ({
  23. ccclass,
  24. property
  25. } = _decorator);
  26. /*
  27. //注册事件
  28. EventEmitter.instance.register(this, "PLAYER_DEAD", (reason: string) => {
  29. console.log("~~:", reason);
  30. });
  31. //派发事件
  32. EventEmitter.instance.dispatch("PLAYER_DEAD", "被怪物击杀");
  33. //注销事件
  34. EventEmitter.instance.unregister(this, "PLAYER_DEAD");*/
  35. /**事件数据接口*/
  36. /**事件哈希表接口*/
  37. EventEmitter = (_dec = ccclass('EventEmitter'), _dec(_class = class EventEmitter extends (_crd && Singleton === void 0 ? (_reportPossibleCrUseOfSingleton({
  38. error: Error()
  39. }), Singleton) : Singleton) {
  40. constructor() {
  41. super(...arguments);
  42. this.eventHash = {};
  43. }
  44. /**
  45. * 清空所有事件监听
  46. */
  47. clearAll() {
  48. console.log("清空所有事件监听");
  49. this.eventHash = {};
  50. }
  51. /**
  52. * 注册事件监听
  53. * @param target 监听对象 (用于取消监听时识别)
  54. * @param type 事件类型
  55. * @param callback 回调函数
  56. */
  57. register(target, type, callback) {
  58. if (!this.eventHash[type]) {
  59. this.eventHash[type] = [];
  60. } //检查是否已注册相同监听
  61. var exists = this.eventHash[type].some(event => event.func === callback && event.target === target);
  62. if (!exists) {
  63. this.eventHash[type].push({
  64. func: callback,
  65. target: target
  66. });
  67. }
  68. }
  69. /**
  70. * 注销事件监听
  71. * @param target 监听对象
  72. * @param type 事件类型
  73. */
  74. unregister(target, type) {
  75. var events = this.eventHash[type];
  76. if (events && events.length > 0) {
  77. for (var i = events.length - 1; i >= 0; i--) {
  78. if (events[i].target === target) {
  79. events.splice(i, 1);
  80. }
  81. }
  82. }
  83. }
  84. /**
  85. * 派发事件
  86. * @param type 事件类型
  87. * @param data 事件数据 (可变参数)
  88. */
  89. dispatch(type) {
  90. for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  91. data[_key - 1] = arguments[_key];
  92. }
  93. var events = this.eventHash[type];
  94. if (events && events.length > 0) {
  95. // 使用slice创建副本,防止在回调中修改数组影响遍历
  96. events.slice().forEach(event => {
  97. try {
  98. event.func.apply(event.target, data);
  99. } catch (error) {
  100. console.error("\u4E8B\u4EF6[" + type + "]\u5904\u7406\u9519\u8BEF:", error);
  101. }
  102. });
  103. }
  104. }
  105. }) || _class); //单例
  106. _export("eventEmitter", eventEmitter = EventEmitter.ins());
  107. _cclegacy._RF.pop();
  108. _crd = false;
  109. }
  110. };
  111. });
  112. //# sourceMappingURL=86664c55e48906e4b063ded4d7377449dbd996fa.js.map