2014-04-05 61 views
2

現在我正在使用Cocos2d 3.0進行編程,在Cocos2d 2.0中,我們可以使用以下代碼將加速度計添加到應用程序,但此示例基於CCoayer類,它已在Cocos2d 3.0中棄用,並且UIAccelerometer也在iOS 5.0中由CMMotionManager替換,所以我想知道如何在Cocos2d 3.0中做到這一點?我搜索了一會兒,沒有發現任何有用的東西。如何在cocos2d 3.0中使用加速度計?

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

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

===

回答

1

那麼,在上面給出的教程示例中有兩個問題。

  1. 單個實例CMMotionManager
  2. 根據設備的方向,加速度數據變爲+ Ve或-Ve。您還需要將Scene添加爲設備方向更改通知的觀察者。

如果您不想處理這些開銷,則可以使用CCAccelerometer類。它解決了這兩個問題。

如何使用

  1. 在項目中添加CoreMotion Framework從構建階段。
  2. 複製CCAccelerometer.hCCAccelerometer.m文件在您的項目中。
  3. 在Prefix.pch中導入CCAccelerometer.h文件。
  4. 在要使用加速度計的CCScene中實現<CCSharedAccelerometerDelegate>
  5. 創建通過簡單地調用[CCAcceleroMeter sharedAccelerometer];
  6. 開始加速在-(void)onEnterTransitionDidFinish致電[CCAcceleroMeter sharedAccelerometer]startUpdateForScene:self];
  7. 定義的委託方法-(void)acceleroMeterDidAccelerate:(CMAccelerometerData*)accelerometerData場景中的共享實例的init方法。
  8. 停止加速度計-(void)onExitTransitionDidStart致電[CCAcceleroMeter sharedAccelerometer]stopUpdateForScene:self];

可以在GitHub找出例子項目。

1

這裏是例子:

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

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

而且視頻教程https://www.youtube.com/watch?v=Xk6lXK6trxU