0

Cocos2D ゲームでジャイロの更新を止めることができません。

init に次のコードがあります。参照態度 = ゼロ;

    [motionManager startGyroUpdates];
    timer = [NSTimer scheduledTimerWithTimeInterval:0.2
                                             target:self
                                           selector:@selector(doGyroUpdate)
                                           userInfo:nil
                                            repeats:YES];

次に、ジャイロの更新自体で、進行状況が 100% を超えていることを確認しますif (progress > 100) { [self pauseSchedulerAndActions]; [self stopGyroUpdates];

それで:

- (void)stopGyroUpdates{
NSLog(@"Stop gyro update");

}

しかし、それはチェックし続けます...したがって、ifステートメント内のコードは呼び出され続けます。

4

3 に答える 3

0

rickster が言ったように、CMMotionManager インスタンスで stopGyroUpdates を呼び出す必要があるため、インターフェース実装でインスタンス変数またはプロパティを作成する必要があります。

インターフェイスを宣言する.mファイルで:

@interface ViewController ()
@property (strong, nonatomic) CMMotionManager  *motionManager;
@end

次に、必要に応じて初期化します

motionManager = [[CMMotionManager alloc] init]; 

次に、更新を停止する必要があるときに呼び出します

[self.motionManager stopGyroUpdates]
于 2013-04-11T10:05:37.047 に答える
0

自分自身ではなく (またはそれに加えて)、CMMotionManager のインスタンスで stopGyroUpdates を呼び出す必要があります。(これは、startGyroUpdates を呼び出すメソッド (たとえば、プロパティまたは ivar 内) がスコープを超えて永続化されていない場合、インスタンスがスコープを超えて永続化される必要があることを意味します。)

于 2013-04-10T14:12:25.587 に答える