0

我正在尝试以越来越高的频率背靠背播放两个音频文件(点击和咔哒声)。它在第一秒内按需要工作,然后声音同时开始播放。知道我在这里做错了什么吗?

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 的第二个实例中。

我会设置两个单独的 NSTimer,它们调用两个单独的函数,可能是 runClickTimer 和 runClackTimer。

于 2012-12-28T04:55:56.070 回答