Cocos2d-x学习笔记(九)-------->Touch事件处理机制
发布时间:2020-12-14 19:18:28 所属栏目:百科 来源:网络整理
导读:Touch 事件处理机制 x引擎中提供了两种不同的触摸事件处理机制,分别是 CCStandardTouchDelegate 和 CCTargetedTouchDelegate 。通常处理 Touch 事件的对象都是 CCLayer 类型或者其子类型的层节点, CCStandardTouchDelegate 是层节点默认注册使用的 Touch
Touch事件处理机制
x引擎中提供了两种不同的触摸事件处理机制,分别是
CCStandardTouchDelegate和
CCTargetedTouchDelegate。通常处理
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被打断。
注:在使用
CCTargetedTouchDelegate的
Touch事件处理过程时需要注意以下几点:
(1)
CCTargetedTouchDelegate回调里的参数接收的不是
Touch事件的集合,而是单个的
Touch事件,x引擎在工作的每一帧里都会将多点触摸点拆散成单个的
Touch事件再进行回调。注意,这里已经清楚的说明了,将多个点的处理过程变为在同一帧内的多次单击处理过程。
(2)用户必须实现
ccTouchBegan函数,且如果某个用户按下消息需要继续跟踪,则
ccTouchBegan需要返回
true,如果返回
false则表示不再跟踪此点的
Touch事件,此触摸点上的
ccTouchMove等接口不会被调用。
(3)用户在注册
TargetTouchDelegate的时候可以设置
bSwallowsTouches标识,若某个
TargetTouchDelegate将该标识设为
true,且需要处理某个
Touch事件,则调用到该
Delegate之后Cocos2d-x引擎不会将
Touch消息发送给其他的
TargetTouchDelegate和
StandardTouchDelegate。
x引擎首先派发事件给
CCTargetedDelegate,再派发给
CCStandardTouchDelegate。对于相同类型的
TouchDelegate,则是根据注册的优先级来确定派发先后顺序,数值越小代表优先级越高。如果优先级一样,则按照注册的顺序派发事件,后注册的
TouchDelegate具有优先权。
例子:参考
TestCpp的
ClickAndMove
如果编译时报错:
error C2061: 语法错误: 标识符“CCTouch”
解决办法:加入
cocos2d命名空间USING_NS_CC;
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- fastJson在java后台转换json格式数据探究(二)--处理数组/
- uboot移植之uboot stage2
- recording: flex4.6+javaweb+tomcat7+Myeclipse8.5+birdeye
- ajax利用html5新特性带进度条上传文件
- HKT 日志: 无法发送数据给客户端: No connection could be
- Hello world React
- ios – Xcode 5:一个方案中的多个测试目标:“模拟器已经在
- Swift遍历数组的三种方式
- 配置log4j2.xml输出MyBatis的SQL日志
- c# – 如何使用FileHelpers编写带头的CSV文件?