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類的單例管理游戲里的事件監聽跟派發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM