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 回答正确。只是想指出:
您不会在模拟器中获得加速器事件,您需要一个设备。
我一直在尝试让加速器在 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 回答正确。只是想指出: 您不会在模拟器中获得加速器事件,您需要一个设备。