Cocos2d-x之Touch事件处理机制

前端之家收集整理的这篇文章主要介绍了Cocos2d-x之Touch事件处理机制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://blog.linguofeng.com/archive/2012/09/12/cocos2d-x-touch.html

提供两种触摸事件处理机制:CCStandardTouchDelegate和CCTargetedTouchDelegate。


CCStandardTouchDelegate默认事件
virtual void ccTouchesBegan(CCSet *pTouches,CCEvent *pEvent); 处理按下事件
virtual void ccTouchesMoved(CCSet *pTouches,221)"> 处理按下并移动事件
virtual void ccTouchesEnded(CCSet *pTouches,221)"> 处理松开事件
virtual void ccTouchesCancelled(CCSet *pTouches,221)"> 处理打断事件
CCTargetedTouchDelegate
virtual bool ccTouchBegan(CCTouch *pTouch,221)"> 处理用户按下事件,true表示继续处理,否则false.
virtual void ccTouchMoved(CCTouch *pTouch,232)">virtual void ccTouchEnded(CCTouch *pTouch,232)">virtual void ccTouchCancelled(CCTouch *pTouch,221)"> 处理打断事件

两者的区别:CCSetCCTouch,一个事件集合一个单个事件。

事件分发的顺序:CCTargetedTouchDelegateCCStandardTouchDelegate

默认情况下所有CCLayer都没有启用触摸事件,需要this->setIsTouchEnabled(true);启用。

如需更改事件:void registerWithTouchDispatcher(void) {}

class MyLayer: public cocos2d:CCLayer {
public
    virtualvoid registerWithTouchDispatcher(void);

    // addStandardDelegate() ccTouchesBegan(CCSet*pTouches,CCEventpEvent ccTouchesMoved ccTouchesEnded ccTouchesCancelled// addTargetedDelegate()bool ccTouchBeganCCTouchpTouch ccTouchMoved ccTouchEnded ccTouchCancelled
}

::registerWithTouchDispatcher)
    // 委托,优先级
    CCTouchDispatchersharedDispatcher()->addStandardDelegatethis kCCMenuTouchPriority// 委托,优先级,是否继续处理addTargetedDelegatetrue// 2.0版本以后CCDirectorsharedDirectorgetTouchDispatcher kCCMenuHandlerPriority}

利用ccTouchBeganccTouchesBegan加以实现点击的回调

ccTouchesBegan// 单点pTouch =CCTouch*)(->anyObject());// 所有点forCCSetIterator iterTouch  pTouches->begin();!=end iterTouch++)
        pCurTouch   *)(*iterTouch
    // 获取点在视图中的坐标(左上角为原点)CCPoint touchLocation  pTouchgetLocationInView// 把点的坐标转换成OpenGL坐标(左下角为原点)
    touchLocation convertToGL(touchLocation// 把OpenGL的坐标转换成CCLayer的坐标local convertToNodeSpace// 大小为100x100,坐标为(0,0)的矩形CCRect rect CCRectMake(0 100// 判断该坐标是否在rect矩形内 flag  rect.containsPointlocalifflag
        // 回调else// 不执行}
原文链接:https://www.f2er.com/cocos2dx/342701.html

猜你在找的Cocos2d-x相关文章