很多时候,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);
- }
- });