diff options
author | chai <chaifix@163.com> | 2018-08-02 20:30:05 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-08-02 20:30:05 +0800 |
commit | d557097244f512acfdc2174383820180af9df01e (patch) | |
tree | f2c95d8a6ba33c0c7431bf83d44a06b5e581b804 /EventMsgCenter/EventMsgCenter.lua | |
parent | bd28fe6339885e8dd30beabb1ea405cdb2f2c464 (diff) |
*update
Diffstat (limited to 'EventMsgCenter/EventMsgCenter.lua')
-rw-r--r-- | EventMsgCenter/EventMsgCenter.lua | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/EventMsgCenter/EventMsgCenter.lua b/EventMsgCenter/EventMsgCenter.lua index 43e859b..7b944c2 100644 --- a/EventMsgCenter/EventMsgCenter.lua +++ b/EventMsgCenter/EventMsgCenter.lua @@ -1,13 +1,14 @@ +local EventMsgCenter = {} + -- <event, {callbacks}> local _broadcast = {} -local EventMsgCenter = {} EventMsgCenter.registerMsg = function(e, callback, first) if _broadcast[e] == nil then _broadcast[e] = {} end first = first or false - EventMsgCenter.unRegisterMsg(e, callback) + EventMsgCenter.unregisterMsg(e, callback) if not first then table.insert(_broadcast[e], callback) else @@ -15,21 +16,27 @@ EventMsgCenter.registerMsg = function(e, callback, first) end end -EventMsgCenter.unRegisterMsg = function(e, callback) - if _broadcast[e] == nil or callback == nil then - return +local removeElement = function(t, e) + for i, v in ipairs(t) do + if v == e then + table.remove(t, i) + break + end end - table.remove(_broadcast[e], callback) end -EventMsgCenter.unRegisterAllMsgByEvent = function(e) - if _broadcast[e] == nil then +EventMsgCenter.unregisterMsg = function(e, callback) + if _broadcast[e] == nil or callback == nil then return end + removeElement(_broadcast[e], callback) +end + +EventMsgCenter.unregisterAllMsgByEvent = function(e) _broadcast[e] = nil end -EventMsgCenter.unRegisterAllMsg = function() +EventMsgCenter.unregisterAllMsg = function() _broadcast = {} end |