2010-12-28 15 views
1

は、私は、変数と私の間隔を変更できるようにしたい、このNSTimerの速度を変数で変更しますか?

[NSTimer scheduledTimerWithTimeInterval:0.001f target:self selector:@selector(Dragon:) userInfo:nil repeats:YES];

のように見えるのviewDidLoadで起動するタイマーを持っています。しかし、いつでも0.001fの変数を配置しようとするとエラーが発生します...アイデアはありますか?

+0

、どのようなエラーが発生しますが入手できますか? –

+0

0.01fを試してください。正確なエラーは何ですか? – WrightsCS

+0

おっと私は浮動小数点ではなく、浮動小数点数を使用していました*私はこのタイマーを使って私が動くキャラクターの速度を制御しています...一度私はアプリを閉じて、それを再び開くと、スピードはデフォルトにリセットされませんどうすれば修正できますか? –

答えて

2

を私はあなたが求めていることを正確に行うアプリを持っています。ユーザーがアプリ内のタイマーの速度を変更できるようにして、その速度を変数にする必要があります。私のやり方は次のとおりです:

  1. メインビューコントローラクラスにtimerプロパティを作成します。

  2. メインビューコントローラクラスが読み込まれるときにタイマーを初期化します。

  3. その後、タイマーが無効になり、値が変更されるとリセットされます。

の.mファイル私のメインビューコントローラの内部からいくつか抜粋:そのメソッドに `float`変数に渡すと何の問題があってはならない

//How often to switch views (float) 
    #define kInterval [[NSUserDefaults standardUserDefaults] integerForKey:@"interval"] 

- (void) viewDidAppear:(BOOL)animated{ 
    [self setTimer]; 
} 

- (void) setTimer{ 
    [self.timer invalidate]; 
    [self setTimer: [NSTimer scheduledTimerWithTimeInterval:kInterval target:self selector:@selector(timerFired) userInfo:nil repeats:YES]]; 
} 
+0

メソッド名を 'resetTimer'に変更したいかもしれませんが、それにもかかわらず+1します。 –

+0

私はこれを最初に使用するので、setTimerと呼んでいます。私はそこに何もないタイマーのためのチェックを入れるべきです。 – Moshe

0

アプリはバックグラウンドプロセスから戻っていますか?その場合は、タイマーを再設定する必要があります。あなたはまた、CADisplayLink覗くすることがあります:http://developer.apple.com/library/ios/#documentation/QuartzCore/Reference/CADisplayLink_ClassRef/Reference/Reference.html%23//apple_ref/doc/uid/TP40009031

+0

タイマーはどのようにリセットされますか?私は増分変更を制御しているフロート毎にタイマーをリセットする必要があると思う。 –

+0

それへの参照を維持する。その後、適切なときにそれを無効にし、新しい変数でタイマーを再作成します。 – joshpaul

+0

どのように私はそれにrefereferenceを維持する...申し訳ありません私は前にタイマーで働いたことがない:oと私は文書でそれまですべてのヘルプのためにそれを見つけることができません –

0

@Kingアイスキャンデーは、あなたがこの方法の助けを借りることができます

  • (ボイド)applicationWillEnterForeground:(のUIApplication *)アプリケーションまたは
  • (無効)applicationDidBecomeActive :(UIApplication *)アプリケーション

あなたはタイマー値について、この方法で物事を解決することができます:)

関連する問題