coco2d-x touch事件
来源:互联网 发布:村淘宝服务站怎样赚钱 编辑:程序博客网 时间:2024/05/20 17:10
一、两种机制的四种不同的事件
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);
处理打断事件virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
处理用户按下事件,true表示继续处理, 否则false.virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
处理按下并移动事件virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
处理松开事件virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
处理打断事件两者的区别: CCSet
与 CCTouch
,一个事件集合一个单个事件。
事件分发的顺序: CCTargetedTouchDelegate
→ CCStandardTouchDelegate
。
默认情况下所有 CCLayer
都没有启用触摸事件,需要 this->setIsTouchEnabled(true);
启用。
如需更改事件: void registerWithTouchDispatcher(void) {}
class MyLayer: public cocos2d:CCLayer {public: virtual void registerWithTouchDispatcher(void); // addStandardDelegate() 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); // addTargetedDelegate() 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);}void MyLayer::registerWithTouchDispatcher(void) { // 委托,优先级 CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this, kCCMenuTouchPriority); // 委托,优先级,是否继续处理 CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, kCCMenuTouchPriority, true); // 2.0版本以后 CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, kCCMenuHandlerPriority); CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, kCCMenuHandlerPriority, true);}
二、 如果实现回调函数?
利用 ccTouchBegan
或 ccTouchesBegan
加以实现点击的回调
void MyLayer::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) { // 单点 CCTouch *pTouch = (CCTouch*)(pTouches->anyObject()); // 所有点 for(CCSetIterator iterTouch = pTouches->begin(); iterTouch != pTouches->end(); iterTouch++) { CCTouch *pCurTouch = (CCTouch*)(*iterTouch); } // 获取点在视图中的坐标(左上角为原点) CCPoint touchLocation = pTouch->getLocationInView(); // 把点的坐标转换成OpenGL坐标(左下角为原点) touchLocation = CCDirector::sharedDirector()->convertToGL(touchLocation); // 把OpenGL的坐标转换成CCLayer的坐标 CCPoint local = convertToNodeSpace(touchLocation) // 大小为100x100,坐标为(0, 0)的矩形 CCRect * rect = CCRectMake(0, 0, 100, 100); // 判断该坐标是否在rect矩形内 bool flag = rect.containsPoint(local) if(flag) { // 回调 } else { // 不执行 }}
- coco2d-x touch事件
- coco2d-x Touch触屏事件的学习
- 【8】coco2d-x事件处理机制一
- 【9】coco2d-x事件处理机制二
- cocos2d-x touch事件
- cocos2d-x touch事件
- cocos2d-x touch事件
- Cocos2d-x---Touch事件
- Cocos2d-x Touch事件处理
- Cocos2D-X 之 Touch事件
- cocos2d-x注册touch事件
- Cocos2d-x之Touch事件
- coco2d-x手记
- coco2d-x使用备忘录
- coco2d-x 动作类
- Coco2d-x linux编译
- coco2d-x xuexi
- coco2d-x 纹理研究
- 电脑设置热点
- ubuntu 64位安装 RTX2012
- 连VPN后不能上网
- Eclipse与Android源码中ProGuard工具的使用
- hibernate 中 load和get的测试
- coco2d-x touch事件
- SAP中如何查看用户的操作记录
- buffer的原理,齐全,hash简单例
- extjs gridpanel使用方法
- Linux 常用20个命令
- V4L2 简介
- Andoid GPS如何进入省电模式
- nyoj-动态规划-234-吃土豆-201308131021
- 博客