问题:
1.按钮点击一般都会有点击音效,cc.Button中没有点击音效的方法
2.按钮的防连击,比如请求服务器消息按钮,可能用户不小心有多点了几次,造成多次向服务器发送请求
解决思路:
采用包装者模式,将按钮点击事件简单的封装下
代码如下
export class UIEventCenter {
/**
*
* @param btn 点击按钮
* @param callback 点击按钮事件
* @param clickSoundName 点击按钮音效名
* @param disableTime 禁用按钮时长
*/
public static ButtonEvent(btn: cc.Button, callback: Function, clickSoundName: string = "S_Button", disableTime: number = 0.4) {
btn.node.on("click", () => {
if (!btn.interactable) {
return;
}
if (clickSoundName) {
//这里是博主自己封装的声音加载方案,你们可以改用自己的声音加载,只要能播放音效即可
AudioManager.PlaySound(clickSoundName);
}
//如果屏蔽时间大于0,点击之后屏蔽
if (disableTime > 0) {
btn.interactable = false;