36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
|
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);
|
||
|
}
|
||
|
}
|