0

いくつかの方法を試しましたが、自分の代わりになる有効な方法が見つかりません

[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];

最近、私はそれを置き換えようとしました

motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = (1.0 / kAccelerometerFrequency);

しかし、それは私のボイドではうまくいかないようです

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    CGPoint pt = theCar.center;
    CGFloat accel = acceleration.x * kAccelerationSpeed;

float halfCarWidth = theCar.frame.size.width / 2;
    if(pt.x - halfCarWidth + accel > 0 && pt.x + halfCarWidth + accel < 320) {
        pt.x += accel;
    }

    [theCar setCenter:pt];
}

iOS 5 で減価償却されたので、sharedAccelerometer を何に置き換えるか

4

1 に答える 1

1

モーション マネージャーにはデリゲート メッセージはありません。タイマー (NSTimer) を使用し、一定間隔でモーション マネージャーにその値をポーリングします。

self.motman = [CMMotionManager new];
if (!self.motman.accelerometerAvailable) {
    // report error or whatever
    return;
}
self.motman.accelerometerUpdateInterval = 1.0 / 30.0;
[self.motman startAccelerometerUpdates];
self.timer =
    [NSTimer
        scheduledTimerWithTimeInterval:self.motman.accelerometerUpdateInterval
        target:self selector:@selector(pollAccel:) userInfo:nil repeats:YES];

pollAccel:は繰り返し呼び出されます。加速度計情報を引き出します。

CMAccelerometerData* dat = self.motman.accelerometerData;
CMAcceleration acc = dat.acceleration;
于 2014-04-23T18:15:27.537 に答える