首页 > 其他 > 详细

cocos2d CCLayer 触摸相关

时间:2014-02-26 14:16:02      阅读:309      评论:0      收藏:0      [点我收藏+]

要让一个  CCLayer 能够接受触摸输入  需要进行如下设置: [selfsetTouchEnabled:YES];

 

cocos2d-x提供了两种触摸事件处理机制, 分别是CCStandardTouchDelegate 和 CCTargetedTouchDelegate。

CCStandardTouchDelegate包含四个回调函数,分别如下:

     virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)   处理用户按下事件

     virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)   处理Touch Move 事件

    virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)    处理用户放开事件

    virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent)  处理Touch被打断事件,如来电话了。

在用户注册了一个CCStandardTouchDelegate之后, 所有的触摸事件都会回调到用户自己定义的CCStandardTouchDelegate。

 

CCTargetedTouchDelegate 包含下面四个回调函数:

 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)       处理用户按下事件,若用户需要继续处理该按下对应的后续事件,则return true, 否则,return false.

 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)       处理Touch Move 事件

virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)        处理用户放开事件

 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent)   处理Touch被打断事件.

CCTargetedTouchDelegate 和 CCStandardTouchDelegate 有很大的区别。

第一,CCTargetedTouchDelegate 回调里的参数接收的不是Touch事件及集合(CCSet),而是单个的Touch事件,cocos2d-x会将多点触摸拆散成单个的Touch事件再进行回调。

第二,用户必须实现ccTouchBegan 函数,且如果某个用户按下消息需要继续跟踪,则ccTouchBegin返回true, 否则,ccTouchMove等接口不会被调用到。

第三,用户在注册TargetTouchDelegate的时候可以设置bSwallowsTouches标识,若某个TargetTouchDelegate将该标识设为true,且需要处理某个Touch事件(ccTouchBegan返回true),则调到该Delegate之后cocos2d-x不会将Touch消息发送给其他的TargetTouchDelegate和StandardTouchDelegate。

 

如果需要实现 CCTargetedTouchDelegate ,则需要调用如下函数

 -(void) registerWithTouchDispatcher

{

    CCTouchDispatcher *touchDispatcher = [[CCDirector sharedDirector] touchDispatcher];

    [touchDispatcher addTargetedDelegate:self

                                priority:kCCMenuHandlerPriority -1

                         swallowsTouches:YES];

}

 

如果实现CCTargetedTouchDelegate,则不能出现以上函数

cocos2d CCLayer 触摸相关

原文:http://www.cnblogs.com/rollrock/p/3567826.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!