解析Quick-Cocos2d-x中自定义事件

解析Quick-Cocos2d-x中自定义事件,第1张

概述Quick-Cocos2d-x中的事件机制在官方的文档中已经讲解得很清楚了,查看这里。 这些方法能处理绝大多数的事件,但如果要实现自定义的事件(例如我们自己实现一个类,对该类添加自定义的事件处理)就需要对类进行扩展了。 下面讲讲如何使用自定义(扩展)的事件机制。 首先认识一下类EventProxy,就是这个类实现了自定义的消息处理 该类有四个函数,分别是: addEventListener rem

Quick-Cocos2d-x中的事件机制在官方的文档中已经讲解得很清楚了,查看这里。

这些方法能处理绝大多数的事件,但如果要实现自定义的事件(例如我们自己实现一个类,对该类添加自定义的事件处理)就需要对类进行扩展了。


下面讲讲如何使用自定义(扩展)的事件机制。


首先认识一下类EventProxy,就是这个类实现了自定义的消息处理

该类有四个函数,分别是:

addEventListener

removeEventListener

removeAllEventListenersForEvent

removeAllEventListeners

根据名字就能知道这几个函数的作用。


下面以我们定义一个继承自Node的类来了解自定义事件的处理方法

定义类EXNode如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 localEXNode= class ( "EXNode" ,function() return display.newNode() end) functionEXNode:ctor() cc.GameObject.extend(self):addComponent( "components.behavior.EventProtocol" ):exportMethods() cc.ui.UIPushbutton. new ({normal= "button/button_normal.png" ,pressed= "button/button_selected.png" }) :align(display.CENTER,display.cx,display.cy) :onbuttonClicked(function() self:getChildEvent() end) :addTo(self) end functionEXNode:getChildEvent() self:dispatchEvent({name= "MY_NEWS" }) end functionEXNode:onEnter() self:settouchEnabled( true ) end functionEXNode:onExit() self:removeAllEventListeners() end return EXNode

最重要的是这句

1 cc.GameObject.extend(self):addComponent( "components.behavior.EventProtocol" ):exportMethods()

该句为EXNode类添加了扩展的事件处理方法,现在我们可以使用EventProxy中的函数了,通过这些函数我们可以让EXNode接收到自定义的消息然后进行处理。

在该类中我们创建一个按钮,用按钮来模拟我们游戏中的某些 *** 作,当按钮按下的时候发送消息给其父节点EXNode,我们将该自定义的消息名字设置为MY_NEWS。


我们在Scene中使用EXNode

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 localEXNode=import( "..class.EXNode" ) localEventScene= class ( "EventScene" ,function() return display.newScene( "EventScene" ) end) functionEventScene:ctor() self.exNode=EXNode. new () self.exNode:addEventListener( "MY_NEWS" ,handler(self,self.onMynews)) self:addChild(self.exNode) end functionEventScene:onMynews() printLog( "INFO" , "父Node知道了子Node发送过来的消息" ) end functionEventScene:onEnter() end functionEventScene:onExit() end return EventScene

在EventScene中创建一个EXNode对象,

1 self.exNode:addEventListener( "MY_NEWS" ,self.onMynews));

让exNode对象监听自定义的事件,从这句可以看到我们监听的事件信息名称为MY_NEWS(即EXNode中按钮点击后发送的自定义消息),回调函数为EventScene的onMynews函数。


测试程序,点击按钮模拟游戏 *** 作,在EXNode内部分发出名称为MY_NEWS的消息,之后exNode对象就能够接收到消息,然后调用回调函数onMynews进行处理了。

总结

以上是内存溢出为你收集整理的解析Quick-Cocos2d-x中自定义事件全部内容,希望文章能够帮你解决解析Quick-Cocos2d-x中自定义事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1033575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存