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