cocos2d-x lua 使用自定义消息EventCustom
2017-04-28 13:52
483 查看
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()使消息接收有效
-- listener local 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) end function DogSprite:onChangeState(event) local dogId = event._usedata["dogId"] local actionId = event._usedata["actionId"] local eventName = event:getEventName() end return ActorSprite
3.清理
在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
- 在quick-cocos2d-x中添加自定义的类给lua使用
- Cocos2d-lua中使用自定义TTF字体
- 在Quick-Cocos2d-x中添加自定义的类给Lua使用
- 在quick-cocos2d-x中添加自定义的类给lua使用
- 【Quick-COCOS2D-X 3.3 如何绑定自定义类至Lua之四】使用绑定C++至Lua的自定义类
- 使用cocos2d-x tolua++工具导出自定义类到lua脚本环境
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(四)使用绑定C++至Lua的自定义类
- 使用用户自定义消息
- MFC中使用自定义消息
- MFC中自由使用自定义消息
- MFC中使用自定义消息
- MFC 中使用自定义消息
- Vc/MFC中自定义消息及其PostMessage触发使用
- 在C#中使用自定义消息
- 使用VC如何处理自定义消息
- vc中怎么使用SendMessage自定义消息函数
- MFC中自由使用自定义消息
- [转] MFC中自定义消息使用
- 在程序中如何使用自定义消息