Я пытаюсь реализовать простой способ включения и отключения прослушивателя Touch в моем классе. Я пытался писать метод в моем классе:Добавление и удаление прослушивателей событий в Cocos 2D-X 3.2
void HelloWorld::setTouchEnabled(bool enabled)
{
if (enabled)
{
auto _touchListener = EventListenerTouchAllAtOnce::create();
_touchListener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(_touchListener, this);
}
else if (!enabled)
{
_eventDispatcher->removeEventListener(_touchListener);
}
}
Я надеялся, чтобы иметь возможность затем вызвать setTouchEnabled(true)
или setTouchEnabled(false)
внутри каких-либо других методов в этом классе. Однако это не работает, так как в конце функции выдается _touchListener
. Когда я попытался объявить EventListener *_touchListener
в моем файле заголовка, я получил ошибку в XCode на этой линии:
_touchListener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
ошибка говорит, что ни один член не по имени onTouchesBegan
существует в cocos2d::EventListener
.
Я предполагаю, что должен быть простой способ сделать это.
Взгляните на это: http://www.cocos2d-x.org/wiki/How_To_Subclass_Sprite_And_Add_Event_Listeners. Я думаю, вы получите несколько ошибок компилятора для 3.2 из-за переименования классов, но это простое исправление. – GameDeveloper