cocos2d-js 实现观察者模式

cocos2d-js 实现观察者模式,第1张

概述1. 手动管理观察者listenerName 2. 确保只有注册过的才能下发事件 3. 当前模式只支持唯一观察者listenerName,不支持共享 4. 在切换到登录界面时要清空所有listener HelpTool._listenerList = {};HelpTool.setListenerFlag = function(listenerNameTable, flag) { fo

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 实现观察者模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1081526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存