Egret 事件機制


主要流程:

    private createGameScene():void {
        var JimGreen = new Boy();
        var HanMeimei = new Girl();

        JimGreen.name = "JimGreen";
        HanMeimei.name = "HanMeimei";

        //擁有事件的人要接受事件的訂閱:訂閱的事件類型、事件發布的響應、告訴響應者誰是發布者(貌似寫誰都一樣)
        //偵聽器的格式必須是 listenerName(evt:Event):void ()
        JimGreen.addEventListener(MyEvent.DATE, HanMeimei.receive, JimGreen);
        JimGreen.invite();
     JimGreen.removeEventListener(MyEvent.DATE, HanMeimei.receive, JimGreen);     } }
//首先要自定義事件 class MyEvent extends egret.Event { //事件的類型用 type:string 來注冊 public constructor(type:string, bubbles:boolean = false, cancelable:boolean = false) { //param type 事件的類型,可以作為 Event.type 訪問。 //param bubbles 確定 Event 對象是否參與事件流的冒泡階段。默認值為 false。 //param cancelable 確定是否可以取消 Event 對象。默認值為 false。 //param data 與此事件對象關聯的可選數據。 super(type, bubbles, cancelable); } //每個自定義事件要有一個唯一事件類型,因此用 static 修飾比較合適 public static DATE:string = "約會"; public _whrer:string = ""; public _todo:string = ""; } class Boy extends egret.Sprite { public constructor() { super(); } public invite() { var engagement:MyEvent = new MyEvent(MyEvent.DATE); //注冊事件 engagement._whrer = "MacDonald"; engagement._todo = "have Dinner"; this.dispatchEvent(engagement); //發布事件 } } class Girl extends egret.Sprite { public constructor() { super(); } public receive(evt:MyEvent) { console.log(evt.target.name + " send engagement."); console.log(evt._todo + " in " + evt._whrer); } }

 

事件優先級 - 多個事件到來時優先響應哪一個?- priority

public addEventListener(type:string, listener:Function, thisObject:any, useCapture:boolean = false, priority:number = 0)

 


免責聲明!

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



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