溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Egret之自定義事件

發(fā)布時(shí)間:2020-06-30 07:18:18 來源:網(wǎng)絡(luò) 閱讀:1974 作者:Aonaufly 欄目:開發(fā)技術(shù)

驗(yàn)證:誰發(fā)送,誰接收
Event :

module demo{
    export class myEvent extends egret.Event{
        public static readonly _DEMO_EVENT : string = "_demo_event";
        private _data : ImyEventName = null;
        public constructor( $ty :  string , $data : ImyEventName ){
            super( $ty , false , false );
            this._data = $data;
        }
        public get Data() : ImyEventName{
            return this._data;
        }
    }

    export interface ImyEventName{
        /**發(fā)送者*/
        _sender : string;
        _dispatcher : myDispacherEvent;
    }
}

EventDispatcher:

module demo{
    export class myDispacherEvent extends egret.EventDispatcher{
        /**
         * 發(fā)送事件
         * @param {string} $ty
         * @param {string} $myName
         */
        public sender( $ty : string , $myName : string ) : void{
            let $event : myEvent = new myEvent(
                $ty,
                {
                    _sender : $myName,
                    _dispatcher : this
                }
            );
            this.dispatchEvent( $event );
        }
    }
}

測試代碼:

    private $dispatcher_0 : demo.myDispacherEvent = null;
    private $dispatcher_1 : demo.myDispacherEvent = null;
    /**
     * preload資源組加載完成
     * Preload resource group is loaded
     */
    private onResourceLoadComplete(event: RES.ResourceEvent) {
        if (event.groupName == "preload") {
            this.stage.removeChild(this.loadingView);
            RES.removeEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.onResourceLoadComplete, this);
            RES.removeEventListener(RES.ResourceEvent.GROUP_LOAD_ERROR, this.onResourceLoadError, this);
            RES.removeEventListener(RES.ResourceEvent.GROUP_PROGRESS, this.onResourceProgress, this);
            RES.removeEventListener(RES.ResourceEvent.ITEM_LOAD_ERROR, this.onItemLoadError, this);
            // this.createGameScene();
            this.$dispatcher_0 = new demo.myDispacherEvent();
            this.$dispatcher_0.addEventListener( demo.myEvent._DEMO_EVENT , this.onDemo , this );
            this.$dispatcher_1 = new demo.myDispacherEvent();
            this.$dispatcher_1.addEventListener( demo.myEvent._DEMO_EVENT , this.onDemo , this );

            this.$dispatcher_0.sender( myEvent._DEMO_EVENT , "Aonaufly" );
            this.$dispatcher_1.sender( myEvent._DEMO_EVENT , "Ainy" );
        }
    }

    private onDemo( $e : demo.myEvent ) : void{
        if( $e.type == demo.myEvent._DEMO_EVENT ){
            egret.log(`發(fā)送者:${$e.Data._sender}, dispatcher_0 : ${ $e.Data._dispatcher == this.$dispatcher_0 }`);
        }
    }

結(jié)果:
Egret之自定義事件

Aonaufly 發(fā)送的 , Ainy是不會(huì)觸發(fā)的 , 切記。。。。。。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI