local EventMsgCenter = {} -- local _broadcast = {} EventMsgCenter.registerMsg = function(e, callback, first) if _broadcast[e] == nil then _broadcast[e] = {} end first = first or false EventMsgCenter.unregisterMsg(e, callback) if not first then table.insert(_broadcast[e], callback) else table.insert(_broadcast[e], 1, callback) end end local removeElement = function(t, e) for i, v in ipairs(t) do if v == e then table.remove(t, i) break end end end 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() _broadcast = {} end EventMsgCenter.sendMsg = function(e, ...) local callbacks = _broadcast[e] if callbacks == nil then return end for _, f in ipairs(callbacks) do if f ~= nil then f(...) end end end return EventMsgCenter