当前位置 : 主页 > 手机开发 > 其它 >

quick cocos2dx 自定义事件管理器

来源:互联网 收集:自由互联 发布时间:2021-06-13
--事件系统 ---------------------------------- EventSystem = class("EventSystem") function EventSystem:ctor() self.dispatcher = cc.Director:getInstance():getEventDispatcher(); self.tCount = {} end --事件绑定 function EventSystem:bind
--事件系统 ---------------------------------- 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
网友评论