1

私のプログラムには、計算と描画を 1 秒間に 60 回行うループがあります。移動アクションを 1 秒に 1 回だけ実行したいのですが、objective-c メソッドでそれを行うにはどうすればよいですか?

4

3 に答える 3

3

使用できます

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

1 秒間:

NSTimer *yourTastTimer = scheduledTimerWithTimeInterval:1 target:yourTarget selector:@selector(yourMethod) userInfo:nil repeats:YES;

詳細については、 NSTimerのドキュメントを確認してください。

編集

この回答を確認することもできます。

于 2012-08-07T09:55:52.740 に答える
2

iPhone に Cocos2D を使用している場合は、NSTimer を使用してはなりません。

ドキュメントに従って、次のschedule:interval:ような方法を使用する必要があります。

[self schedule: @selector(tick:) interval:1.0f];

- (void) tick: (ccTime) dt
{
    //...
}
于 2012-08-07T12:18:58.560 に答える
0

あなたが CCSprite を使用している場合、それらはトリックを行う可能性のあるスケジュールメソッドを持っています。基本的に、メインループに対して何をしますか。メイン ループにティッカーを保持し、これがティッカー%60==0 であることを確認することもできます。次に、移動アクションを呼び出します。

私は NSTimer が cocos2d hereで推奨されていないことを読みました。

于 2012-08-07T10:04:10.697 に答える