信号槽
cocos实现:
(()=>{
window.g_Slot = new class CSlot extends cc.EventTarget{
}
window.g_Event = {
E_GAME:"E_GAME",
E_ROOM:"E_room"
}
})()
完整实现:
(()=>{
window.g_Slot = new class CSlot {
constructor(){
this._event = {};
}
on(event, func){
if (!this._event[event]){
this._event[event] = [];
}
this._event[event].push(func);
}
off(event, func){
if (this._event[event]){
if (func){
for (let idx in this._event[event]){
if (func === this._event[event][idx]){
this._event[event].splice(idx, 1);
break;
}
}
}
else{
delete this._event[event];
}
}
}
emit(event, a,b,c,d,e,f,g){
if (this._event[event]){
for (let func of this._event[event]){
func(a,b,c,d,e,f,g);
}
}
}
}
window.g_Event = {
SCENE_MAIN: "SCENE_MAIN",
SCENE_GAME: "SCENE_GAME",
};
})()
信号槽知识点:
用全局存放信号,方便跨脚本调用,使用时仅需要写入自定义信号,
来发送监听便可。