Laya事件派发和监听
Laya事件派发和监听
新建个类继承自EventDispatcher
可调度事件的所有类的基类。Laya中所有事件都是继承自这个类。
export class GameDispatcher extends Laya.EventDispatcher{ private static _instance:GameDispatcher = new GameDispatcher(); public static getInstance():GameDispatcher{ return this._instance; } protected constructor(){ super(); } }
再新建一个定义事件名的类
export class EventName{ public static readonly EVENT_NAME_STRING1 = "1"; public static readonly EVENT_NAME_STRING2 = "2"; }
监听和派发事件
private initDemo():void{ GameDispatcher.getInstance().on(EventName.EVENT_NAME_STRING1,this,this.monitorEvent); GameDispatcher.getInstance().event(EventName.EVENT_NAME_STRING1); } private monitorEvent():void{ console.log("监听到事件"); }
可以看到控制台输出监听事件。
事件派发时传参
/**
* 派发事件。
* @param type 事件类型。
* @param data (可选)回调数据。<b>注意:</b>如果是需要传递多个参数 p1,p2,p3,...可以使用数组结构如:[p1,p2,p3,...] ;如果需要回调单个参数 p ,且 p 是一个数组,则需要使用结构如:[p],其他的单个参数 p ,可以直接传入参数 p。
* @return 此事件类型是否有侦听者,如果有侦听者则值为 true,否则值为 false。
*/
event(type: string, data: any = null): boolean
private initDemo():void{ let str1:string = "行运茶"; let str2:string = "快乐水"; GameDispatcher.getInstance().on(EventName.EVENT_NAME_STRING1,this,this.monitorEvent); GameDispatcher.getInstance().event(EventName.EVENT_NAME_STRING1,str1); } private monitorEvent(str1:string):void{ console.log("监听到事件",str1); }
在搭建游戏框架里就可以自己定义个事件类EventName和一个继承EventDispatcher类的单例管理游戏里的事件监听跟派发。