擴(kuò)展按鈕類
跨頁面?zhèn)鲄⑼ㄐ?onfire下載
/**
* 擴(kuò)展按鈕類
* @type {Function|*}
*/
cc.bsButton = cc.Class({
extends: cc.Component,
editor: {
requireComponent: cc.Button
},
ctor: function () {
this.onClicks = cc.bsList(); // 點(diǎn)擊事件容器
},
properties: {
// 是否標(biāo)準(zhǔn)化
isNormal: true,
// 點(diǎn)擊音效
clickAudio: {
default: null,
type: cc.AudioClip
}
},
init: function () {
// 標(biāo)準(zhǔn)化處理
if (this.isNormal) {
this.btn.transition = cc.Button.Transition.SCALE;
this.btn.zoomScale = 1.05;
}
},
onLoad: function () {
this.btn = this.node.getComponent(cc.Button);
// 監(jiān)聽觸摸事件
this.node.on(cc.Node.EventType.TOUCH_START, event => {
}, this);
this.node.on(cc.Node.EventType.TOUCH_MOVE, event => {
}, this);
this.node.on(cc.Node.EventType.TOUCH_END, event => {
// 處理點(diǎn)擊事件
// let url = this.clickAudio;
// if (url) cc.audioEngine.play(url, false, 1);
cc.globalValue.playMusic("btnsfx_1",false,0.5);
if(!this.btn.interactable){
return;
}
this.onClicks.each(listener => {
listener.call(listener.context, event);
});
}, this);
this.init();
},
onDisable: function () {
// 重置按鈕狀態(tài)
if(this.btn)
this.btn._transitionFinished = true;
this.node.setScale(1, 1);
},
onDestroy: function () {
this.node.targetOff(this);
this.removeAllClickListener();
},
/**
* 添加點(diǎn)擊事件
* @param callback
* @param context
* @returns {cc.bsButton}
*/
addClickListener: function (callback, context) {
if (!callback)
return this;
callback.context = context || this;
this.onClicks.append(callback);
return this;
},
/**
* 移除點(diǎn)擊事件
* @param callback
* @returns {cc.bsButton}
*/
removeClickListener: function (callback) {
this.onClicks.remove(callback);
return this;
},
/**
* 清空所有點(diǎn)擊事件
*/
removeAllClickListener: function () {
this.onClicks.clear();
},
});