2009-05-27 5 views
2

iPhone開発が初めてです。私はゲームのループのために[NSTimer scheduledTimerWithTimeInterval:0.01]を使用しました。ゲームは、私がCGContextClipToRectを使ってアニメーションのために大きな画像をクリップする描画画面の機能です。デバイスのNSTimerがシミュレータの速度より遅い

しかし、0.01秒はシミュレータではデバイス上では動作しません。どうすればこの問題を解決できますか?

タイマーコードが

(void)viewDidLoad { 
    GameView *main = [[GameView alloc] 
    initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    main.backgroundColor = [UIColor blackColor]; 
    self.view = main; 
    [main release];  
    self.tim = [NSTimer scheduledTimerWithTimeInterval: 0.01   
    target: self selector: @selector (gameloop:) userInfo: nil repeats: YES]; 
    [super viewDidLoad]; 
} 

としてビューコントローラである誰もが私を助けることができますか?

+1

1秒あたり100回の更新は、おそらく少し楽観的です。 – U62

+0

U62が言ったことの一つは、代わりに1.0/30.0を試してください。さらに:より具体的にする。デバイス上で「動作していない」と言いますが、「動作していない」とはどういう意味ですか? –

答えて

0

U62によると、100fpsは現実的な期待ではありません.30で実行してみてください。おそらく1秒間に60回更新し、実行方法を確認してください。また、高いフレームレートで動作する必要のあるゲームを書く場合は、OpenGLで書かなければなりません。

1つのオプションは、毎回ティックごとにロジックを処理することができますが、数ダッチごとにしか描画しません。

1

NSTimerはこの仕事には間違ったツールです。これは、リアルタイムタイマーではありません。それはいつ発射されるのか保証しておらず、簡単にフレームを逃すことができます。

this threadにこの種類のプログラムを開発する方法については、多くの推奨事項があります。 Appleのサンプルコードへの言及に特に注意してください。

0

たとえば、フレームをアニメーション化するとき、フレームはシミュレータで正しい速度で表示されます。 しかし、それは非常に遅い(FPS)を示しています。言い換えれば、少年がシミュレータで高速に動作します。しかし、 デバイスでは歩いています。

関連する問題