很多时候,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);
}
});
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!