cocoscreatorボタン長押し機能実現


背景


製品にはゲームの開始ボタンが必要です.クリック:ゲームの開始;長押し:管理フィールドパネルを表示します.エンジン:cocoscretor v 2.1.2言語:JavaScript

インプリメンテーション

cc.Class({
    extends: cc.Component,

    properties: {
        btnStart: cc.Button,                //    
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad () {
        //        
        this.touchFlag = false;
        this.touchStartTime = null;
        //                  
        this.btnStart.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this);
        this.btnStart.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this);
    },

    // start () {},

    // onEnable() {},

    //    
    touchStart(){
        //     
        this.touchFlag = true;
        //         
        this.touchStartTime = new Date();
    },

    //      
    touchHold(){
        if(this.touchFlag && this.touchStartTime != null){
            //         
            let touchHoldTime = new Date();
            let milliseconds = touchHoldTime.getTime() - this.touchStartTime.getTime();
            if(milliseconds > 300){
                this.touchFlag = false;
                //         
                //todo...
            }
        }
    },

    //    
    touchEnd(){
        this.touchFlag = false;
        this.touchStartTime = null;
        //        
        //todo...
    },

    update (dt) {
        //            
        if(this.touchFlag){
            this.touchHold();
        }
    },
});


備考:cocoscreetorが残したボタンはイベント中のccを傍受するためである.Node.EventType.MOUSE_MOVEは、タッチポイントの画素移動が発生していない場合、このイベントリスニング関数はトリガーされません.そこで,本稿ではtouchFlag変数とupdate関数を組み合わせてビジネス上のニーズを実現した.これで終わりです.