zoukankan      html  css  js  c++  java
  • 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);
        }
    });
  • 相关阅读:
    git简单介绍
    ssh常用操作
    gentoo emerge简单用法
    golang程序因未知错误崩溃时如何记录异常
    RPC实现原理(HSF、dubbo) 从头开始(一)
    websocket
    tmpfs小结
    CURL常用命令
    SVN命令详解
    3.Linux Shell流程控制
  • 原文地址:https://www.cnblogs.com/skyxu123/p/9644882.html
Copyright © 2011-2022 走看看