[cocos2dx_lua]Lua版自定义事件分发系统
来源:互联网 发布:大数据怎么搜索 编辑:程序博客网 时间:2024/06/10 12:33
--事件系统----------------------------------local EventSystem = class("EventSystem")function EventSystem:ctor() self._eventBus = {}end-- _eventBus[eventName][tag] = listenerfunction EventSystem:regEvent(eventName,listener,tag) print(eventName,listener,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 成功! ]]", eventName, tag) else printf("[[通知中心 %s 注销 %s 失败! ]]", eventName, 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观察者模式
阅读全文
0 0
- [cocos2dx_lua]Lua版自定义事件分发系统
- 高性能事件分发器,lua 版
- [cocos2dx_Lua]自定义本地化数据
- Swift自定义事件分发
- [cocos2dx_Lua]quick中的节点事件
- [cocos2dx_Lua]quick中的触摸事件
- 自定义view的事件分发
- 自定义viewgroup中的事件分发
- 自定义控件之事件分发
- cocos2dx_lua lua的简单入门回顾
- [cocos2dx_Lua]在发布时加密lua源文件
- [cocos2dx]事件分发机制--lua源码(二)
- Android系统ViewGroup事件分发
- [cocos2dx_Lua]quick中的节点帧事件
- 自定义View的事件分发机制
- 自定义View的事件分发机制
- cocos2dx 自定义触摸事件的分发
- 属性动画、事件分发和自定义控件
- NOIP 提高组 2007
- 如何更改ISE的IP核生成器中默认关联的PDF阅读器?
- 哈希表(hash table)概念详解(这可能是你能找到的最详细讲解)
- Python学习笔记——20170825
- 挖财2017校招前端工程师笔试试卷
- [cocos2dx_lua]Lua版自定义事件分发系统
- leetcode[Image Smoother]//待整理多种解法
- 简单的Shell命令
- 奇异值分解 SVD 的数学解释和numpy实例
- AbstractQueuedSynchronizer源码剖析(一)- 从抽象和接口说起
- [BZOJ1856][SCOI2010]字符串(组合数)
- 《统计学习方法》 支持向量机(SVM) Python实现
- 单链表总结(JAVA)
- 访问控制修饰符