cocos2d-x3.0 触摸机制与方向的判断

第一步、首先我们要新建一个头文件和一个cpp文件,在新建文件的时候我们要改变一下文件保存的位置,选择Classes文件(ps:不要以为你在classes上右键添加,它就默认给你添加到classes文件夹里边了,其实不是,我们要手动改一下,不然以后会出错误,如果不在classes文件夹下,出现了错误,可以看我的另一篇博客,有修改的方法)

第二步、在头文件里边添加如下三行代码

virtual bool onTouchBegan(Touch* touch, Event* event);

virtual bool onTouchMoved(Touch* touch, Event* event);

virtual bool onTouchEnded(Touch* touch, Event* event);

第三步、在cpp文件,init函数里,添加触摸事件的监听代码如下

// EventListenerTouchOneByOne是单点触摸监听

auto touchListener = EventListenerTouchOneByOne::create();
touchListener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);
touchListener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this);
touchListener->onTouchEnded = CC_CALLBACK_2(GameScene::onTouchEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);        //把监听器添加到事件派发器


第四步、在cpp文件中、实现刚才在头文件里重载的哪三个函数、代码如下

bool GameScene::onTouchBegan(Touch* touch, Event* event)
{
beginPoint = touch->getLocation(); //得到开始的坐标点
return true;
}
void GameScene::onTouchMoved(Touch* touch, Event* event)
{
}
void GameScene::onTouchEnded(Touch* touch, Event* event)
{
Point endPoint = touch->getLocation();//得到结束的坐标点

       //开始的坐标点与结束的坐标点进行比较
int dx = beginPoint.x - endPoint.x;
int dy = beginPoint.y - endPoint.y;
if (abs(dx) > 10 || abs(dy) > 10)     //判断一下在x或y轴上是否出现了移动距离
{
if (dx < 0 && abs(dx) > 10)     //如果有移动距离,然后再判读一下开始与结束坐标点的差值是大于零还是小于零,从而判断移动的方向
{
log("right");
}
else if (dx > 0 && abs(dx) > 10)
{
log("left");
}
else if (dy < 0 && abs(dy) > 10)
{
log("up");
}
else
{
log("down");
}
}
}

第五步、选择启动调试,就可以在输出窗口看到打印的日志,看一下是否和你滑动的方向一致,如果一致就成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值