--事件系统
----------------------------------
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
----------------------------------
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