COCOS CREATOR(TS)のsettimeOut

2706 ワード

一:前景


多くのフロントエンドはsettimeOutが言う価値がないと思っているかもしれませんが、Butは、異なるプラットフォームでsettimeOutの実行には一定のルールが守らなければならないので、仕方がないこともあります.例えば、先日の開発で非常に奇妙な現象が発見された.setoutTimeはWeb/微信IDE端末で機能するが、携帯電話の微信で動作すると、それほど機能しないようだ.今日は少し時間を割いてよくテストしました.内容は以下の通りです.

二:テスト


Ⅰ,試験環境は以下の通り(TSコードを使用)Ⅱ,コード1,試験思想はそれぞれパラメータ(settimeOut付帯伝参とsettimeOut不付帯)を与え,無パラメータはWeb(edge),微信IDE,携帯電話微信でそれぞれの結果(印刷データ)2,コード①,三つのケースの列挙コード
export enum TY_SETTIMEOUT {
    /**setTimeOut  */
    ___HAS_PARAMS_UNBRING4ALONG___ = 1,
    /** */
    ___NO_PARAMS___ = 2,
    /**setTimeOut  */
    ___HAS_PARAMS_BRING4ALONG___ = 3
}

②,コアテストコード
private _myName : string = null;
    private _myAge : number = null;
    /**
     *  
     */
    private testSetTimeOutInWeChat( $ty : TY_SETTIMEOUT ) : void{
        switch ($ty) {
            case TY_SETTIMEOUT.___NO_PARAMS___:
                this._timeout_id = setTimeout(
                    this.onTimeOutNoParams.bind(this),
                    2000
                );
                break;
            case TY_SETTIMEOUT.___HAS_PARAMS_UNBRING4ALONG___:
                this._myName = "Aonaufly";
                this._myAge = 18;
                this._timeout_id = setTimeout(
                    this.onTimeOutHasParams_2_unbring.bind(this),
                    2000
                );
                break;
            case TY_SETTIMEOUT.___HAS_PARAMS_BRING4ALONG___:
                this._timeout_id = setTimeout(
                    this.onTimeOutHasParams_2_bring.bind(this),
                    2000,
                    "Aonaufly",
                    18
                );
                break;
        }
    }
    private onTimeOutNoParams() : void {
        console.log( ` no params timeout   ------` );
    }

    private onTimeOutHasParams_2_bring( $name : string , $age : number ) : void{
        console.log(`has params timeout     ------ , name : ${$name} , age : ${$age}`);
    }

    private onTimeOutHasParams_2_unbring() : void{
        console.log(`has params timeout     ------ , name : ${this._myName} , age : ${this._myAge}`);
    }

Ⅲ,テスト

1、パラメータを持たない.


①WEB端末②WeChat IDE③携帯電話WeChat

2,settimeOut付属パラメータ


①WEB
②微信IDE③携帯電話微信

3,settimeOutはパラメータを持たない


①WEB②WeChat IDE③携帯電話WeChat

三:結論


携帯電話の微信端は間違った穴で、settimeOutにパラメータを持たないように注意してください.次のように~~this.timeout_id = setTimeout(this.onTimeOutHasParams_2_bring.bind(this),2000,"Aonaufly",18);
                             egret  , egret setTimeOut (egret.setTimeOut) . LayaBox   Cocos Creator .

転載先:https://blog.51cto.com/aonaufly/2360953