Cocos2d-x之Touch事件处理机制

Cocos2d-x之Touch事件处理机制,第1张

概述http://blog.linguofeng.com/archive/2012/09/12/cocos2d-x-touch.html 提供两种触摸事件处理机制:CCStandardTouchDelegate和CCTargetedTouchDelegate。 一、两种机制的四种不同的事件 CCStandardTouchDelegate 默认事件 virtual void ccTouchesBegan

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// 不执行}
总结

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

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存