cocos2dx中加速度计的使用方法

How to use Accelerometer in 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);

我完全没有想法,我需要帮助。在第二个 "approach" 它编译了,但我的加速函数从未被调用过。

先感谢您!

我正在使用 Android,所以我可能需要在 AndroidManifest?

中编辑一些内容

cocos 论坛的人将我链接到此: Cocos docs

如您所见,正确的方法是使用前面描述的 EventListener 方法。但是你需要打电话

Device::setAccelerometerEnabled(true);

通话中

setAccelerometerEnabled(true);

从场景的init不起作用,需要在'Device'上调用静态方法。

这就是你的做法。

Device::setAccelerometerEnabled(true);
auto accListener = EventListenerAcceleration::create(CC_CALLBACK_2(MainScene::accelerated, this));
getEventDispatcher()->addEventListenerWithSceneGraphPriority(accListener, this);

加速的地方采用这些参数:

void accelerated(Acceleration *acceleration, Event *event);

当然这个函数可以任意调用,因为 EventListener 有一个函数指针。

Tritzium 回答正确。只是想指出: 您不会在模拟器中获得加速器事件,您需要一个设备。