![[cocos2dx_lua]Lua版自定义事件分发系统,第1张 [cocos2dx_lua]Lua版自定义事件分发系统,第1张](/aiimages/%5Bcocos2dx_lua%5DLua%E7%89%88%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6%E5%88%86%E5%8F%91%E7%B3%BB%E7%BB%9F.png)
--事件系统----------------------------------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版自定义事件分发系统所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)