Cocos2d-x学习笔记(九)-------->Touch事件处理机制

Cocos2d-x学习笔记(九)-------->Touch事件处理机制,第1张

概述Touch事件处理机制 x引擎中提供了两种不同的触摸事件处理机制,分别是 CCStandardTouchDelegate和 CCTargetedTouchDelegate。通常处理 Touch事件的对象都是 CCLayer类型或者其子类型的层节点, CCStandardTouchDelegate是层节点默认注册使用的 Touch事件处理机制,在使用 CCStandardTouchDelegate时 touch事件处理机制 x引擎中提供了两种不同的触摸事件处理机制,分别是 CCStandardtouchDelegateCCTargetedtouchDelegate。通常处理 touch事件的对象都是 cclayer类型或者其子类型的层节点, CCStandardtouchDelegate是层节点默认注册使用的 touch事件处理机制,在使用 CCStandardtouchDelegate时所有的触摸事件都会以一个集合的形式提供给 touch事件的回调函数,回调函数需要处理的是多个点的触摸信息。 CCStandardtouchdelegate包含以下四个回调函数: virtual voID cctouchesBegan(CCSet *ptouches,CCEvent *pEvent):处理用户按下事件。
virtual voID cctouchesMoved(CCSet *ptouches,CCEvent *pEvent):处理触摸点移动事件。
virtual voID cctouchesEnded(CCSet *ptouches,CCEvent *pEvent):处理用户放开事件。
virtual voID cctouchesCancelled(CCSet *ptouches,CCEvent *pEvent):处理 touch被打断事件,如来电话了。
如果想使用这种 cclayer提供的默认 touch事件处理方式,还要在 cclayer初始化时设置一个开关:调用 setIstouchEnable(true/false)true表示开启 touch事件, false表示关闭事件处理功能。
CCTargetedtouchDelegate包含以下四个回调函数: virtual bool cctouchBegan(CCtouch *ptouch,CCEvent *pEvent):处理用户按下事件。
virtual voID cctouchmoved(CCtouch *ptouch,CCEvent *pEvent):处理触摸点移动事件。
virtual voID cctouchended(CCtouch *ptouch,CCEvent *pEvent):处理用户放开事件。
virtual voID cctouchCancelled(CCtouch *ptouch,CCEvent *pEvent):处理 touch被打断。 :在使用 CCTargetedtouchDelegatetouch事件处理过程时需要注意以下几点: (1) CCTargetedtouchDelegate回调里的参数接收的不是 touch事件的集合,而是单个的 touch事件,x引擎在工作的每一帧里都会将多点触摸点拆散成单个的 touch事件再进行回调。注意,这里已经清楚的说明了,将多个点的处理过程变为在同一帧内的多次单击处理过程。 (2)用户必须实现 cctouchBegan函数,且如果某个用户按下消息需要继续跟踪,则 cctouchBegan需要返回 true,如果返回 false则表示不再跟踪此点的 touch事件,此触摸点上的 cctouchmove等接口不会被调用。 (3)用户在注册 TargettouchDelegate的时候可以设置 bSwallowstouches标识,若某个 TargettouchDelegate将该标识设为 true,且需要处理某个 touch事件,则调用到该 Delegate之后Cocos2d-x引擎不会将 touch消息发送给其他的 TargettouchDelegateStandardtouchDelegate。 x引擎首先派发事件给 CCTargetedDelegate,再派发给 CCStandardtouchDelegate。对于相同类型的 touchDelegate,则是根据注册的优先级来确定派发先后顺序,数值越小代表优先级越高。如果优先级一样,则按照注册的顺序派发事件,后注册的 touchDelegate具有优先权。
例子:参考 TestCpp的 ClickAndMove

如果编译时报错: error C2061: 语法错误: 标识符“CCtouch”
解决办法:加入 cocos2d命名空间USING_NS_CC; 总结

以上是内存溢出为你收集整理的Cocos2d-x学习笔记(九)-------->Touch事件处理机制全部内容,希望文章能够帮你解决Cocos2d-x学习笔记(九)-------->Touch事件处理机制所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存