quick cocos2dx 自定义事件管理器

--事件系统
----------------------------------
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值