0

2つのオーディオファイル(クリックとクラック)を連続して再生しようとしています。最初の1秒間は希望どおりに動作し、同時にサウンドの再生が始まります。私がここで間違っていることについて何か考えはありますか?

static float clickClackDelay = 1.0;

- (void)runClickClackTimer {

    clickURL = [[NSBundle mainBundle] URLForResource:@"click" withExtension:@"wav"];
    clackURL = [[NSBundle mainBundle] URLForResource:@"clack" withExtension:@"wav"];
    avClick = [[AVAudioPlayer alloc] initWithContentsOfURL:clickURL error:nil];
    avClack = [[AVAudioPlayer alloc] initWithContentsOfURL:clackURL error:nil];

    clickClack = [NSTimer scheduledTimerWithTimeInterval:clickClackDelay
                                             target:self
                                           selector:@selector(runClickClackTimer)
                                           userInfo:nil
                                            repeats:NO];

    [avClick play];
    sleep(clickClackDelay);
    [avClack play];
    sleep(clickClackDelay);

    NSLog(@"Play sound every %.2f", clickClackDelay);

    clickClackDelay -= 0.01;
}
4

2 に答える 2

1

まずBOOL、.hファイルでインスタンスを定義します。

 BOOL play;

timerここで、必要な場所にこれを追加しplay sound in delayます。

 NSTimer *clickClack = [NSTimer scheduledTimerWithTimeInterval:clickClackDelay
                                              target:self
                                            selector:@selector(runClickClackTimer)
                                            userInfo:nil
                                             repeats:YES];

clickClackDelayに従って遅延を再生するそのメソッドは次のとおりです。

-(void)runClickClackTimer
{
  if(play)
  {
    play = FALSE;
    [avClick play];
  }
  else
  {
    play = TRUE;
    [avClack play];
  }
}
于 2012-12-28T06:30:42.880 に答える
0

最初のスリープタイマーとNSTimerは両方とも同じ時間(1秒)遅延するため、

[avClack play];

runClickClackTimerの最初のインスタンスで同時に

[avClick play];

runClickClackTimerの2番目のインスタンス。

2つの別々の関数(おそらくrunClickTimerとrunClackTimer)を呼び出す2つの別々のNSTimerを設定します。

于 2012-12-28T04:55:56.070 に答える