cocos2dx的onTouchBegan()中的return bool是什么意思

What does the return bool mean in onTouchBegan() of cocos2dx

我发现以下代码仅适用于 onTouchBegan() 而不适用于 onTouchMoved()onTouchEnded()

auto listener = EventListenerTouchOneByOne::create();

listener->onTouchBegan = [=](Touch *touch, Event *event) {
    CCLOG("on touch begain at (%f,%f)", touch->getLocation().x, touch->getLocation().y);
    return false; // this will make following two events couldn't be fired.
};
listener->onTouchMoved = [=](Touch *touch, Event *event) {
    CCLOG("on touch moved at (%f, %f)", touch->getLocation().x, touch->getLocation().y);
};

listener->onTouchEnded = [=](Touch *touch, Event * event) {
    CCLOG("on touch ended at (%f,%f)", touch->getLocation().x, touch->getLocation().y);
};

_eventDispatcher->addEventListenerWithFixedPriority(listener, 1);

发生这种情况的原因是 onTouchBegan 分配给了一个 lambda 函数,在将其更改为 trueonTouchMoved 之后 returns false onTouchEnded 将按预期触发。

我四处搜索可以找到关于此 return 标志的用途的任何解释?有人可以帮忙解释一下吗?

文档没有说明这一点,但 programmers-guide 说明了这一点:

// trigger when you push down
listener1->onTouchBegan = [](Touch* touch, Event* event)
{
    // your code
    return true; // if you are consuming it
};

所以你可以通过 bool 告诉系统你是否要处理触摸事件。

此外:您不需要在 lambda 中进行任何捕获,因此最好使用 [] 而不是 [=]