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 函数,在将其更改为 true
、onTouchMoved
之后 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 中进行任何捕获,因此最好使用 []
而不是 [=]
我发现以下代码仅适用于 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 函数,在将其更改为 true
、onTouchMoved
之后 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 中进行任何捕获,因此最好使用 []
而不是 [=]