Я пытался заставить акселерометр работать в cocos2d-x c ++.
Я попытался добавить эту функцию в свою сцену, что многие из моих результатов поиска Google сказали, что я должен:
virtual void didAccelerate(Acceleration *acceleration);
Это, однако, дает мне ошибку, говоря, что я переопределяю последнюю функцию.
Затем я нашел, как я могу использовать для этого вещь EventDispatcher.
auto accListener = EventListenerAcceleration::create(CC_CALLBACK_2(MainScene::accelerated, this));
getEventDispatcher()->addEventListenerWithSceneGraphPriority(accListener, this);
В обоих случаях я вызывал эту функцию ранее в функции инициализации моей сцены:
setAccelerometerEnabled(true);
У меня нет идей, и мне нужна помощь. При втором «подходе» он компилировался, но моя ускоренная функция никогда не вызывалась.
Заранее спасибо!
Я использую Android, поэтому, возможно, мне нужно что-то редактировать в AndroidManifest?
Ребята на форумах Cocos связали меня с этим:
Cocos Docs
Как видите, правильный путь — использовать подход EventListener, как описано ранее. Однако вам нужно позвонить
Device::setAccelerometerEnabled(true);
призвание
setAccelerometerEnabled(true);
Поскольку инициализация сцены не работает, вам нужно вызвать статический метод на устройстве.
Вот как ты это делаешь.
Device::setAccelerometerEnabled(true);
auto accListener = EventListenerAcceleration::create(CC_CALLBACK_2(MainScene::accelerated, this));
getEventDispatcher()->addEventListenerWithSceneGraphPriority(accListener, this);
Где ускорение принимает эти параметры:
void accelerated(Acceleration *acceleration, Event *event);
Конечно, эту функцию можно вызывать как угодно, так как EventListener принимает указатель на функцию.
Трициум ответил правильно. Просто хотел отметить:
Вы не получите события ускорителя в симуляторе, вам нужно устройство.