C ++无论如何要处理onTouchHolding

时间:2017-01-20 07:39:48

标签: c++ events touch handle

我正在使用cocos2d-x 3.10,在此版本中,我们可以通过类似的方式轻松处理onTouchBeganonTouchMovedonTouchEndonTouchCancel / p>

_touchListener = EventListenerTouchOneByOne::create();
_touchListener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);
_touchListener->onTouchCancelled = CC_CALLBACK_2(GameScene::onTouchCancel, this);
_touchListener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this);
_touchListener->onTouchEnded = CC_CALLBACK_2(GameScene::onTouchEnded, this);

onTouchHolding怎么样?非常感谢朋友

1 个答案:

答案 0 :(得分:0)

没有onTouchHolding因为没有事件发生时没有事件发生(即没有移动你的手指)。

如果您想查看触摸持续多长时间,可以在onTouchBegan中设置标记。在update方法中,如果设置了该标志,则将成员变量增加dt。在onTouchEnded中,您将取消设置标记。

这样的事情:

void GameScene::update(float dt)
{
    if (_touchInProgress)
    {
        _holdTime += dt;
    }
}

bool GameScene::onTouchBegan(Touch *touch, Event *event)
{
    _holdTime = 0.0;
    _touchInProgress = true;
    return true;
}

void GameScene::onTouchEnded(Touch *touch, Event *event)
{
    _touchInProgress = false;
    if (_holdTime > kMyHoldTimeThreshold)
    {
        // Do something awesome
    }
}