version: cocos2d-x 3.6
1.发送消息-- post message-- event将会被传递给消息接收函数,所以所有需要传递的数据都可放到event中local event = cc.EventCustom:new("MSG_TEST")event._usedata = {["state"]=self.curState,["actionID"]=self.actionID}cc.Director:getInstance():getEventdispatcher():dispatchEvent(event)2.监听与接收 监听消息需要调用
self:enableNodeEvents()
使消息接收有效 -- Listenerlocal ActorSprite = class("ActorSprite",cc.Node)function ActorSprite:initEventListener() self:enableNodeEvents() -- cc.Node self.eventListeners = {} -- user to delete when dtor local Listener = cc.EventListenerCustom:create(MSG_TEST,handler(self,self.onChangeState)) local eventdispatcher = self:getEventdispatcher() eventdispatcher:addEventListenerWithFixedPriority(Listener,1) table.insert(self.eventListeners,Listener) endfunction DogSprite:onChangeState(event) local dogID = event._usedata["dogID"] local actionID = event._usedata["actionID"] local eventname = event:getEventname()endreturn ActorSprite3.清理 在ActorSprite被释放之后,需要将监听删除,否则收到消息后self为nil,将会导致异常(onCleanup将会在节点被删除时自动调用)。
function ActorSprite:onCleanup() -- cc.Node for i,var in ipairs(self.eventListeners) do cc.Director:getInstance():getEventdispatcher():removeEventListener(var) end end总结
以上是内存溢出为你收集整理的cocos2d-x lua 使用自定义消息EventCustom全部内容,希望文章能够帮你解决cocos2d-x lua 使用自定义消息EventCustom所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)