【问题标题】:C++ anyway to handle onTouchHoldingC++ 无论如何处理 onTouchHolding
【发布时间】:2017-01-20 07:39:48
【问题描述】:

我使用的是cocos2d-x 3.10,在这个版本中我们可以通过类似这样的方式轻松处理onTouchBeganonTouchMovedonTouchEndonTouchCancel

_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 怎么样?非常感谢朋友

【问题讨论】:

  • hold 不是以begin 开头并以end 结尾吗?

标签: c++ events touch handle


【解决方案1】:

没有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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2012-01-03
    • 2011-01-26
    • 1970-01-01
    • 2014-02-27
    相关资源
    最近更新 更多