1

私のゲームは毎秒刻々と過ぎていく時計の音を鳴らします。ゲーム全体を通してゆっくりと音を上げてほしい。私の最初の考えは、NSTimerを使用して、メソッドが起動したときに次のように速度を更新することでした。

static float soundDelay = 1.0;
timer = [NSTimer scheduledTimerWithTimeInterval:clickClackDelay
                                                     target:self
                                                   selector:@selector(playSound)
                                                   userInfo:nil
                                                    repeats:YES];

- (void)playSound {
    soundDelay -= 0.1;
    NSLog(@"Play sound");
}

これは機能しませんでした。NSTimerは実際にはそのように使用することを意図していないようです。これをどのように達成できるかについての他の提案はありますか?

4

3 に答える 3

1

-playSound同じタイマーを使用して繰り返し呼び出すことはしないでください。代わりに、タイマーを使用してメソッドを1回呼び出し、その後、より短い遅延で新しいタイマーを作成します。たとえば、タイマー自体を作成して、が呼び出される-playSoundたびに新しいタイマーが作成されるようにすることができます。-playSound

于 2012-12-28T03:42:42.447 に答える
1

playSoundそれ自体からメソッドを呼び出すことで実装できます。あなたは次の方法でそれを行うことができます。

- (void)playSound
{
   static float soundDelay = 1.0;
   if([timer isValid])
   {
     [timer invalidate];
     timer = nil;
   }
   timer = [NSTimer scheduledTimerWithTimeInterval:clickClackDelay
                                                     target:self
                                                   selector:@selector(playSound)
                                                   userInfo:nil
                                                    repeats:NO];
    soundDelay -= 0.1;
    if(soundDelay <=0)   //when sound delay is zero invalidate timer
    {
       [timer invalidate];
       timer = nil;
    }
    NSLog(@"Play sound");
}
于 2012-12-28T03:49:34.113 に答える
0

この目的のために、別のタイマーを再スケジュールする必要があります。

- (void)playSound {
    static float soundDelay = 1.0;
    [NSTimer scheduledTimerWithTimeInterval:soundDelay
                                                     target:self
                                                   selector:@selector(playSound)
                                                   userInfo:nil
                                                    repeats:NO];
    if (soundDelay > 0.1) {
        soundDelay -= 0.1;
    }
    NSLog(@"Play sound");
}

ps終了条件を追加することもできます。

于 2012-12-28T03:48:19.097 に答える