--事件系统 ---------------------------------- EventSystem = class("EventSystem") function EventSystem:ctor() self.dispatcher = cc.Director:getInstance():getEventDispatcher(); self.tCount = {} end --事件绑定 function EventSystem:bind(event_id,event_func,priority) if event_id == nil then error("Try to bind to a nil event_id") return end if event_func == nil then error("Try to bind to a nil event_func") return end if priority and priority <= 0 then error("0 priority is forbidden") return end local function onEvent(event) event_func(unpack(event.usedata)) end self.tCount[event_id] = self.tCount[event_id] or 0 self.tCount[event_id] = self.tCount[event_id] + 1 local listener = cc.EventListenerCustom:create(event_id,onEvent) self.dispatcher:addEventListenerWithFixedPriority(listener,priority or self.tCount[event_id]) return listener end --解绑事件 function EventSystem:unbind(listener) if nil == listener then return end self.dispatcher:removeEventListener(listener) end --事件触发 function EventSystem:fire(event_id,...) local event = cc.EventCustom:new(event_id) event.usedata = {...} self.dispatcher:dispatchEvent(event) end 原文链接:https://www.f2er.com/cocos2dx/338584.html