cocoscreator 防止button連擊多次觸發事件


很多時候,ui上面的button都只需要單擊觸發一次,當用戶快速連續點擊時就有可能出現非意料的事情,解決這個問題很簡單,只要規定button在指定間隔時間內只能觸發一次就行。

將下面的代碼保存為ButtonSafe.js, 只需要給每個button控件添加下面的腳本並指定間隔時間即可防止重復點擊。

/**
 * Created by skyxu on 2018/9/12.
 */

"use strict";

cc.Class({
    extends: cc.Component,

    properties: {
        safeTime: {
            default: 0.5,
            tooltip: "按鈕保護時間,指定間隔內只能點擊一次."
        }
    },

    start(){
        let button = this.getComponent(cc.Button);
        if (!button){
            return;
        }

        this.clickEvents = button.clickEvents;

        this.node.on('click', ()=>{
            button.clickEvents = [];
            this.scheduleOnce((dt)=>{
                button.clickEvents = this.clickEvents;
            }, this.safeTime);

            // mark: 這種方式會導致快速點擊按鈕時觸摸穿透(按鈕禁用時不再接受觸摸事件)
            // let autoGrey = button.enableAutoGrayEffect;
            // button.enableAutoGrayEffect = false;
            // button.interactable = false;
            // this.scheduleOnce((dt)=>{
            //     button.enableAutoGrayEffect = autoGrey;
            //     button.interactable = true;
            // }, this.safeTime);
        }, this);
    }
});

 


免責聲明!

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



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