pinball/assets/_Game/Scripts/Manager/EventManger.ts

36 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-03-06 01:28:01 -08:00
import { _decorator, Component, EventTarget, Node } from 'cc';
import GameEvent from '../Enum/GameEvent';
const { ccclass, property } = _decorator;
@ccclass('EventManger')
export class EventManger extends Component {
//singleton
private static _instance: EventManger = null;
public static get instance(): EventManger {
if (!EventManger._instance) {
EventManger._instance = new EventManger('EventManger');
}
return EventManger._instance;
}
private _eventTarget = new EventTarget();
onLoad() {
if (!EventManger._instance) {
EventManger._instance = this;
}
}
public on(eventType: GameEvent, callback?: (...args: any[]) => void, thisArg?: any) {
this._eventTarget.on(eventType, callback, thisArg);
}
public off(eventType: GameEvent, callback?: (...args: any[]) => void, thisArg?: any) {
this._eventTarget.on(eventType, callback, thisArg);
}
public emit(eventType: GameEvent, arg0?: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any) {
this._eventTarget.emit(eventType, arg0, arg1, arg2, arg3, arg4);
}
}