finde ich folgenden Code nur mit onTouchBegan()
und nicht onTouchMoved()
und onTouchEnded()
Was bedeutet die Rückkehr Bool in onTouchBegan bedeuten() von cocos2dx
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);
Der Grund, warum dies der Fall ist, dass die onTouchBegan
zu einer Lambda-Funktion zugewiesen arbeiten das false
nach dem Ändern dieser auf true
, onTouchMoved
und onTouchEnded
wird wie erwartet ausgelöst.
Ich suchte rund um zu finden, was soll diese Rückkehr Flags tun? Könnte jemand helfen, das zu erklären?
Hallo, danke für die Erklärung, habe ich dieses Dokument gelesen und ich dachte, es war nur für die 'onTouchBegan' Aktion Ich hätte nie gedacht, dass es sich auf die anderen beiden Konsumenten im selben Listener auswirken sollte. Und ich bin mir der Verwendung von '[]' und '[=]' bewusst, aber danke, dass ihr daran erinnert habt, ich denke, es ist mehr wie eine Performance-Sache, oder? danke – armnotstrong
Nicht nur Leistung, sondern auch Nutzung! Hängt davon ab, was Sie mit den Daten in der Lamda machen wollen. Ich bin mir jedoch nicht sicher, ob der Compiler die Erfassung optimiert, wenn Sie keine erfassten Objekte verwenden. –