Cocos2d iphone 如何在COCOS2D3.0中使用加速度计?
我现在正在使用Cocos2d 3.0编程,在Cocos2d 2.0中,我们可以使用以下代码将加速计添加到应用程序中,但此示例基于Cocos2d 3.0中不推荐的类CCLayer,iAccelerator在IOS 5.0中也被CMMotionManager取代,所以我想知道如何在CoCoCos2D 3.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])) { // ...
-(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,那将非常好?