如何在 cocos2dx 中使用加速度计

How to use Accelerometer in cocos2dx

本文关键字:加速度计 cocos2dx      更新时间:2023-10-16

我一直在尝试让加速器在 cocos2d-x c++ 中工作。我试图将这个功能添加到我的场景中,我的很多谷歌搜索结果都说我应该:

virtual void didAccelerate(Acceleration *acceleration);

但是,这确实给了我一个错误,说我正在覆盖最后一个函数。然后我找到了如何使用EventDispatcher的东西。

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

这两个函数中,我之前在场景的 init 函数中调用了这个函数:

    setAccelerometerEnabled(true);

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

提前谢谢你!

我正在使用Android,所以也许我需要在AndroidManifest中编辑某些内容?

cocos 论坛上的家伙将我链接到此:科科斯文档

如您所见,正确的方法是使用前面所述的事件侦听器方法。但是您需要致电

Device::setAccelerometerEnabled(true);

setAccelerometerEnabled(true);

由于场景的 init 不起作用,您需要在"设备"上调用静态方法。

所以这是你如何做到的。

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

其中加速 is 采用以下参数:

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

当然,这个函数可以调用任何东西,因为 EventListener 需要一个函数指针。

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