1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // EventMgr.ts
- import { EventTarget } from 'cc';
- export default class EventMgr {
- private static _eventMgr: EventMgr = null;
- private _eventTarget: EventTarget = null;
- private _listeners: any = null;
- public static get ins(): EventMgr {
- if (this._eventMgr == null) {
- this._eventMgr = new EventMgr();
- }
- return this._eventMgr;
- }
- private constructor() {
- this._eventTarget = new EventTarget();
- this._listeners = {};
- }
- /**
- * 添加事件监听
- */
- addEventListener(eventType: string, callback: (...args: any[]) => void, target: any) {
- this._eventTarget.on(eventType, callback, target);
- }
- /**
- * 添加一次性事件监听
- */
- addEventListenerOnce(eventType: string, callback: (...args: any[]) => void, target: any) {
- this._eventTarget.once(eventType, callback, target);
- }
- /**
- * 移除事件监听
- * 如果只传递 eventType,则移除该类型的所有监听器。
- */
- removeListener(eventType: string, callback?: (...args: any[]) => void, target?: any) {
- this._eventTarget.off(eventType, callback, target);
- }
- /**
- * 通过注册对象移除事件监听
- */
- removeListenerByTarget(target?: any) {
- this._eventTarget.targetOff(target);
- }
- /**
- * 广播分发事件
- * @param eventType
- * @param userData
- */
- dispatchEvent(eventType: string, userData?: any) {
- console.log("事件分发", eventType);
- this._eventTarget.emit(eventType, userData);
- }
- }
|