02.cocos2d-x触摸事件(一)

xxx.h文件:

    bool onMapTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event);
    void onMapTouchMove(cocos2d::Touch *touch, cocos2d::Event *event);
    void onMapTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event);

xxx.cpp文件:

    //1.单点触摸
    auto mapOneByOne = EventListenerTouchOneByOne::create();
    mapOneByOne->setSwallowTouches(true);//其它事件都吞没掉(点击一个对象,其它对象的事件是否被吞没)
    mapOneByOne->onTouchBegan = CC_CALLBACK_2(MainMap::onMapTouchBegan, this);
    mapOneByOne->onTouchMoved = CC_CALLBACK_2(MainMap::onMapTouchMove, this);
    mapOneByOne->onTouchEnded = CC_CALLBACK_2(MainMap::onMapTouchEnded, this);
    //添加触摸事件
    _eventDispatcher->addEventListenerWithSceneGraphPriority(mapOneByOne, imgMap);


bool MainMap::onMapTouchBegan(cocos2d::Touch * touch, cocos2d::Event * event)
{
    CCLOG("onMapTouchBegan");
    return true;
}

void MainMap::onMapTouchMove(cocos2d::Touch * touch, cocos2d::Event * event)
{
        CCLOG("onMapTouchMove");

        //手指滑动的位置距离
        Vec2 diff = touch->getDelta();
        //地图原来的位置
        Vec2 posSrc = imgMap->getPosition();
        //滑动后的位置
        Vec2 posDes = posSrc + diff;

        //判断不能拖到屏幕以外
        if (posDes.x >= 1280) {
            posDes.x = 1280;
        }
        if (posDes.y >= 814) {
            posDes.y = 814;
        }
        if (posDes.x <= (960 - 1280)) {
            posDes.x = 960 - 1280;
        }
        if (posDes.y <= (640 - 814)) {
            posDes.y = 640 - 814;
        }
        //图片滑动后的位置
        //imgMap->setPosition(posDes);
}

void MainMap::onMapTouchEnded(cocos2d::Touch * touch, cocos2d::Event * event)
{
    CCLOG("onMapTouchEnded");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值