在需要增加手势的Layer类(比如HelloWorldScene类)中增加如下内容:
在.h中增加成员变量,记录触摸起始点
cocos2d::Point startTouch;
在.cpp的init函数中增加如下内容
// 增加手势识别
auto myListener = EventListenerTouchOneByOne::create();
//吞掉touch消息
myListener->setSwallowTouches(true);
//lambda很好用
myListener->onTouchBegan = [=](Touch* touch,Event* event)
{
//保存触摸起始点位置坐标
Point startTouch = touch->getLocation(); //(坐标原点在左下角)
return true;
};
myListener->onTouchEnded = [=](Touch* touch,Event* event)
{
//获取触摸终止点位置坐标
Point endTouch=touch->getLocation();
//计算起点与终点的距离
Point delta = startTouch - endTouch;
//根据X轴和Y轴的位移量绝对值大小判断:X方向大则为左右滑动,Y方向大则为上下滑动
if(abs(delta.x) > abs(delta.y))
{
//手势左右判断
if(delta.x > 15)
{
swipeLeft();
}
else if (delta.x < -15)
{
swipeRight();
}
}
else
{
//手势上下判断
if(delta.y > 15)
{
swipeDown();
}
else if (delta.y < -15)
{
swipeUp();
}
}
};
//注册监听
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addEventListenerWithSceneGraphPriority(myListener,this);