Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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 @H_968_81@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++)
        @H_411_262@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// 不执行}

大佬总结

以上是大佬教程为你收集整理的Cocos2d-x之Touch事件处理机制全部内容,希望文章能够帮你解决Cocos2d-x之Touch事件处理机制所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。