我有5个音频通道由5个AVAudioPlayer对象操作,我想给每个频道添加一个很小的延迟,所以当我按下一个按钮时,我得到了以下内容:
我厌倦了这样做,只需要在每次调用AVAudioPlayerObeject之间使用睡眠(0.25),如下所示:
[audioPlayer1 play];
sleep(delay);
[audioPlayer2 play];
sleep(delay);
[audioPlayer3 play];
sleep(delay);
[audioPlayer4 play];
sleep(delay);
[audioPlayer5 play];...where延迟是一个设置为0.25的浮动变量。然而,这是行不通的,我同时听到了所有5种声音。我尝试过使用NSTimer进行实验,但我并不真正理解如何为延迟创建一个单独的方法,然后用我的代码调用该方法。
有人能帮我修改一下代码以达到预期的效果吗?谢谢!
发布于 2013-05-24 05:47:34
用一个整数保持状态,该整数标识要启动的声音.
@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];
}
}您可以在这个类中使声音变量的计时器间隔和最大计数。
https://stackoverflow.com/questions/16727783
复制相似问题