Как использовать акселерометр в cocos2dx

Я пытался заставить акселерометр работать в 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?

2

Решение

Ребята на форумах 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 принимает указатель на функцию.

2

Другие решения

Трициум ответил правильно. Просто хотел отметить:
Вы не получите события ускорителя в симуляторе, вам нужно устройство.

1

По вопросам рекламы [email protected]