Cocos2d iphone 如何在COCOS2D3.0中使用加速度计?

Cocos2d iphone 如何在COCOS2D3.0中使用加速度计?,cocos2d-iphone,Cocos2d Iphone,我现在正在使用Cocos2d 3.0编程,在Cocos2d 2.0中,我们可以使用以下代码将加速计添加到应用程序中,但此示例基于Cocos2d 3.0中不推荐的类CCLayer,iAccelerator在IOS 5.0中也被CMMotionManager取代,所以我想知道如何在CoCoCos2D 3.0中实现这一点?我在谷歌上搜索了一会儿,没有发现任何有用的东西 -(id) init { if ((self = [super init])) { // ...

我现在正在使用Cocos2d 3.0编程,在Cocos2d 2.0中,我们可以使用以下代码将加速计添加到应用程序中,但此示例基于Cocos2d 3.0中不推荐的类CCLayer,iAccelerator在IOS 5.0中也被CMMotionManager取代,所以我想知道如何在CoCoCos2D 3.0中实现这一点?我在谷歌上搜索了一会儿,没有发现任何有用的东西

-(id) init
{
    if ((self = [super init]))
    {
        // ...
        self.isAccelerometerEnabled = YES;
        // ...
    }
}

-(void) accelerometer:(UIAccelerometer *)accelerometer 
        didAccelerate:(UIAcceleration *)acceleration
{
    // ...
}

==

我们已经写了一篇关于这方面的教程:


您需要使用CoreMotion框架。

我们已经就以下内容编写了教程:


您需要使用CoreMotion框架。

好吧,上面给出的教程示例中有两个问题

CMMotionManager的单个实例。 根据设备的方向,加速度数据变为+Ve或-Ve。您还需要添加场景作为设备方向更改通知的观察者。 如果您不想处理这些开销,可以使用CCAccelerometer类。它解决了这两个问题

如何使用 从构建阶段在项目中添加CoreMotion框架。 在项目中复制CCAccelerometer.h和CCAccelerometer.m文件。 在Prefix.pch中导入CCAccelerometer.h文件。 在要使用加速计的场景中实现。 通过简单调用[CCAcceleroMeter SharedAcelerometer],在init方法中创建共享实例; 通过调用[CCAcceleroMeter sharedAccelerometer]startUpdateForScene:self]启动加速计in-voidOneInterTransitiondFinish; 定义代理方法-voidAccelerometerData加速:CMAccelerometerData*场景中的accelerometerData。 通过调用[CCAcceleroMeter sharedAccelerometer]stopUpdateForScene:self]停止-voidOneXitTransitiondStart中的加速计;
您可以在中找到示例项目。

好吧,上面给出的教程示例中有两个问题

CMMotionManager的单个实例。 根据设备的方向,加速度数据变为+Ve或-Ve。您还需要添加场景作为设备方向更改通知的观察者。 如果您不想处理这些开销,可以使用CCAccelerometer类。它解决了这两个问题

如何使用 从构建阶段在项目中添加CoreMotion框架。 在项目中复制CCAccelerometer.h和CCAccelerometer.m文件。 在Prefix.pch中导入CCAccelerometer.h文件。 在要使用加速计的场景中实现。 通过简单调用[CCAcceleroMeter SharedAcelerometer],在init方法中创建共享实例; 通过调用[CCAcceleroMeter sharedAccelerometer]startUpdateForScene:self]启动加速计in-voidOneInterTransitiondFinish; 定义代理方法-voidAccelerometerData加速:CMAccelerometerData*场景中的accelerometerData。 通过调用[CCAcceleroMeter sharedAccelerometer]stopUpdateForScene:self]停止-voidOneXitTransitiondStart中的加速计; 您可以在中找到示例项目。

以下是示例:

Device::setAccelerometerEnabled(true);
auto accelerometerListener = EventListenerAcceleration::create([this](Acceleration* acc, Event* event)
{
});

getEventDispatcher()->addEventListenerWithSceneGraphPriority(accelerometerListener, this);
还有视频教程

以下是示例:

Device::setAccelerometerEnabled(true);
auto accelerometerListener = EventListenerAcceleration::create([this](Acceleration* acc, Event* event)
{
});

getEventDispatcher()->addEventListenerWithSceneGraphPriority(accelerometerListener, this);

另外,视频教程

谢谢,我稍后会尝试。如果您可以扩展此答案,我需要如何使用CoreMotion,那将非常好。谢谢,我稍后会尝试。如果您可以扩展此答案,我需要如何使用CoreMotion,那将非常好?