【Cocos2dx】手势识别
来源:互联网 发布:程序员的出路在哪里 编辑:程序博客网 时间:2024/05/27 01:11
Cocos2dx中没有附带滑动手势识别的函数,只提供四个触摸事件,一个是触摸开始、一个是触摸过程中、一个接触结束,还有一个是不怎么用的触摸被系统的电话打断。这在《【Cocos2dx】触摸事件》(点击打开链接)已经提到过了,这里不再赘述。然而,只是能够识别一个触摸按下动作而已,如果我要做到如下图一样的,识别用户的手势滑动方向这怎么做呢?
其实非常简单,首先,在头文件HelloWorldScene.h中声明该场景使用触摸事件,只使用到触摸开始与触摸结束的监听就可以了,然后用四个变量分别记录触摸开始的坐标与结束坐标:
#include "cocos2d.h"#include "math.h"//用到绝对值USING_NS_CC;class HelloWorld:public cocos2d::CCLayer{public:virtual bool init();static cocos2d::CCScene* scene();CREATE_FUNC(HelloWorld);private:float startX,startY,endX,endY;//记录触摸开始坐标与结束坐标CCLabelTTF *label;//文字 void ccTouchesBegan(CCSet *pTouches,CCEvent *pEvent);//开始触摸 void ccTouchesEnded(CCSet *pTouches,CCEvent *pEvent);//结束触摸 };
之后在主文件HelloWorldScene.cpp中触摸开始、触摸结束事件利用CCTouch获取其触摸开始与结束的坐标,之后如下图:
先求触摸开始、结束坐标的,X方向与Y方向之差,看哪个大,则认为是哪个方向上的偏移,这两个数肯定是有大小的,之后看偏移数值的正负,看偏移是向左向右。这里的偏移量利用fabs来求浮点数的绝对值。具体代码如下:
#include "HelloWorldScene.h"CCScene* HelloWorld::scene(){CCScene *scene = CCScene::create();HelloWorld *layer = HelloWorld::create();scene->addChild(layer);return scene;}bool HelloWorld::init(){CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();//获取尺寸 label=CCLabelTTF::create("Please Touch!", "Arial", 24);//设定相应文本的位置 label->setPosition(ccp(visibleSize.width/2,visibleSize.height/2));//放在屏幕的中央this->addChild(label); //声明这个场景是存在触摸事件的 this->setTouchEnabled(true); return true;}//开始触摸 void HelloWorld::ccTouchesBegan(CCSet *pTouches,CCEvent *pEvent){CCTouch *touch=(CCTouch *)pTouches->anyObject();//记录开始坐标startX=touch->getLocation().x;startY=touch->getLocation().y;};//结束触摸void HelloWorld::ccTouchesEnded(CCSet *pTouches,CCEvent *pEvent){ CCTouch *touch=(CCTouch *)pTouches->anyObject();//记录结束坐标endX=touch->getLocation().x;endY=touch->getLocation().y;//求开始与结束坐标之差float offsetX=endX-startX;float offsetY=endY-startY;if(fabs(offsetX)>fabs(offsetY)){//根据X方向与Y方向的偏移量大小的判断if(offsetX>0){label->setString("Left!");}else{label->setString("Right!");}}else{if(offsetY>0){label->setString("Up!");}else{label->setString("Down!");}} };
当然,还可以进一步规定,两个方向上的偏移量大于一定程度才认为是一个触摸手势。
0 0
- cocos2dx-手势识别
- 【Cocos2dx】手势识别
- cocos2dx 2.1.5版本的手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- 手势识别
- C语言网络编程(三)建立套接字通讯TCP
- listView图文显示! 并且简单解决一下图片混乱问题
- Sum Root to Leaf Numbers
- 2015/11/10
- hdu 4770 Lights Against Dudely(暴力+状压)
- 【Cocos2dx】手势识别
- 使用Struts2标签出错,解决办法
- .NET转Java
- 看到的一篇总结性的文章。先存着
- input 按键分发
- cordeforce 7A. Kalevitch and Chess超简单代码
- python核心编程:repr()与str()的区别
- 核心java系列——java中继承
- Android中服务端代码如何导入工程当中