我正在使用cocos2d-x 3.10,在此版本中,我们可以通过类似的方式轻松处理onTouchBegan
,onTouchMoved
,onTouchEnd
,onTouchCancel
/ 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
怎么样?非常感谢朋友
答案 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
}
}