iphone - 为 iPhone 应用程序制作一个计时器来稍微延迟几个音频 channel ?

标签 iphone ios xcode audio nstimer

我有 5 个音频 channel ,由 5 个 AVAudioPlayer 对象操作,我想为每个 channel 添加一个非常小的延迟,这样当我按下按钮时,我会得到以下结果:

  • 开始声音 1(持续 10 秒)
  • 在声音 1 后 0.25 秒开始声音 2
  • 在声音 2 后 0.25 秒开始声音 3
  • 在声音 3 后 0.25 秒开始声音 4
  • 在声音 3 后 0.25 秒开始声音 5

我厌倦了在每次调用 [AVAudioPlayerObeject play] 之间使用 sleep(0.25) 来做到这一点,如下所示:

[audioPlayer1 play];
sleep(delay);
[audioPlayer2 play];
sleep(delay);
[audioPlayer3 play];
sleep(delay);
[audioPlayer4 play];
sleep(delay);
[audioPlayer5 play];

...其中延迟是设置为 0.25 的浮点变量。然而,这不起作用,我同时听到了所有 5 种声音。我尝试使用 NSTimer 进行实验,但我不太明白如何为延迟创建一个单独的方法,然后用我的代码调用该方法。

有人可以帮我修改我的代码以获得想要的效果吗?谢谢!

最佳答案

用一个整数来保存状态,该整数标识要启动的声音...

@property(assign, nonatomic) NSInteger startSound;

安排计时器...

self.startSound = 0;
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];

当计时器启动时,开始新的声音。开始后退出 5....

- (void)timerFired:(NSTimer *)timer {

    if (self.startSound < 5) {
        // assume you know how to play sound N, numbered 0..4
        [self playSound:self.startSound++];
    } else {
        [timer invalidate];
    }
}

您可以在此类中设置计时器间隔和声音变量的最大数量。

关于iphone - 为 iPhone 应用程序制作一个计时器来稍微延迟几个音频 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16727783/

相关文章:

iphone - 如何使用 Xcode 4 在 xib 中设置对象标签?

ios - 刷新 UITableView tableFooterView 而无需重新加载整个表格数据

ios - 快速保存和检索 UserDefaults 中的自定义对象

xcode - 文件所有者 'view' socket 未显示

mysql - 使用 xcode 编译基本的 mysql c 代码

iphone - Objective-C:在 iPhone 上访问 REST API 的最佳方式

iphone - 通过循环将 TouchUpInside 事件分配给多个 UIImageView,并使用可以进一步对每个 UIImageView 进行动画/操作的处理程序方法

iphone - 如何在 UISearchBar 中创建两个输入文本字段

ios - 将 Google Cloud Endpoints 用于基于 Swift 语言构建的 iOS 应用

ios - 当键盘快速出现时移动文本字段