加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocoscreator 防止button连击多次触发事件

发布时间:2020-12-14 18:55:06 所属栏目:百科 来源:网络整理
导读:很多时候,ui上面的button都只需要单击触发一次,当用户快速连续点击时就有可能出现非意料的事情,解决这个问题很简单,只要规定button在指定间隔时间内只能触发一次就行。 将下面的代码保存为ButtonSafe.js,只需要给每个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);
    }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读