[cocos2dx_lua]Lua版自定义事件分发系统

[cocos2dx_lua]Lua版自定义事件分发系统,第1张

概述--事件系统----------------------------------local EventSystem = class("EventSystem")function EventSystem:ctor() self._eventBus = {}end-- _eventBus[eventName][tag] = listenerfunction EventSystem


--事件系统----------------------------------local EventSystem = class("EventSystem")function EventSystem:ctor()    self._eventBus = {}end-- _eventBus[eventname][tag] = Listenerfunction EventSystem:regEvent(eventname,Listener,tag)    print(eventname,tag)    if type(eventname) == "string" and type(Listener) == "function" then        if not self._eventBus[eventname] then self._eventBus[eventname] = {} end        tag = tag .. ''        self._eventBus[eventname][tag] = Listener        printf("[[通知中心 %s 注册 %s 成功! ]]",eventname,tag)    else        printf("[[通知中心 %s 注册 %s 失败! ]]",tostring(eventname),tag .. '')    endendfunction EventSystem:postEvent(eventname,data)    assert(eventname,"EventSystem:postEvent eventname = nil")    local target = self._eventBus[eventname]    if not target then printf("[[通知中心 %s 不存在! ]]",eventname) return end    local event = { eventname = eventname,tag = nil,data = data }    if target then        for _tag,v in pairs(target) do            printf("[[通知中心 向 %s 发送 %s 成功! ]]",_tag,event.eventname)            event.tag = _tag            v( event )        end    endendfunction EventSystem:unRegEvent(eventname,tag)    if self._eventBus[eventname] then        tag = tag .. ''        self._eventBus[eventname][tag] = nil        printf("[[通知中心 %s 注销 %s 成功! ]]",tag)    else        printf("[[通知中心 %s 注销 %s 失败! ]]",tag)    endendfunction EventSystem:unRegEventByname(eventname)    if self._eventBus[eventname] then        self._eventBus[eventname] = nil        printf("[[通知中心 %s 注销成功! ]]",eventname)    else        printf("[[通知中心 %s 注销失败! ]]",eventname)    endendfunction EventSystem:hasEventListenerByname(eventname)    local t = self._eventBus[eventname]    if not t then return false end    for _,__ in pairs(t) do        return true    end    return falseendfunction EventSystem:hasEventListener(eventname,tag)    return (not self._eventBus[eventname][tag .. ''])endfunction EventSystem:removeAllEventListeners()    self._eventBus = {}endfunction EventSystem:dumpAllEventListeners()    print("---- EventSystem:dumpAllEventListeners() ----begin")    for name,Listeners in pairs(self._eventBus) do        printf("-- event: %s",name)        for tag,Listener in pairs(Listeners) do            printf("--     tag: %s,Listener: %s",tostring(tag),tostring(Listener))        end    end    print("---- EventSystem:dumpAllEventListeners() ----end")endreturn EventSystem

[设计模式]Observer观察者模式 总结

以上是内存溢出为你收集整理的[cocos2dx_lua]Lua版自定义事件分发系统全部内容,希望文章能够帮你解决[cocos2dx_lua]Lua版自定义事件分发系统所遇到的程序开发问题。

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

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

原文地址:https://www.54852.com/web/1084618.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存