1. 手动管理观察者Listenername
2. 确保只有注册过的才能下发事件
3. 当前模式只支持唯一观察者Listenername,不支持共享
4. 在切换到登录界面时要清空所有Listener
HelpTool._ListenerList = {};HelpTool.setListenerFlag = function(Listenernametable,flag) { for (var i = 0; i < Listenernametable.length; i++) { if (flag == false && HelpTool._ListenerList[Listenernametable[i]]) { cc.eventManager.removeCustomListeners(Listenernametable[i]); } HelpTool._ListenerList[Listenernametable[i]] = flag; cc.log("xiaohei " + (flag ? "enable" : "disable") + " Listener ID: " + Listenernametable[i]); }};HelpTool.disableAllListeners = function() { for (var k in HelpTool._ListenerList) { HelpTool._ListenerList[k] = false; cc.eventManager.removeCustomListeners(k); cc.log("xiaohei set and remove all Listeners flag is false " + k); }};HelpTool.dispatchListener = function(Listenername,patchdata) { if (HelpTool._ListenerList[Listenername]) { cc.log("xiaohei dispatch Listener ID: " + Listenername); var datatable = patchdata || {}; cc.eventManager.dispatchCustomEvent(Listenername,datatable); } else { cc.log("xiaohei Listener the " + Listenername + " flag is " + HelpTool._ListenerList[Listenername]); }};
注册:
onExit: function() { HelpTool.setListenerFlag(["msg_superstar_currency_change","msg_superstar_state_change"],false);},init: function() { // xiaohei add Listener cc.eventManager.addCustomListener("msg_superstar_currency_change",function(args) { this.updateMoneyNum(); }.bind(this)); cc.eventManager.addCustomListener("msg_superstar_state_change",function(args) { this.onUpdateState(); }.bind(this)); HelpTool.setListenerFlag(["msg_superstar_currency_change",true);},
下发:
HelpTool.dispatchListener("msg_superstar_currency_change");
注销:(主城的onExit中调用)
@H_404_21@onExit: function () { cc.AudioEngine.getInstance().stopMusic("res/audio/bgm/BGM_mainui_1.mp3"); this._super(); HelpTool.disableAllListeners(); cc.log("#### HomeScene on exit");} 总结以上是内存溢出为你收集整理的cocos2d-js 实现观察者模式全部内容,希望文章能够帮你解决cocos2d-js 实现观察者模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)