0

我想循环播放声音AVAudioPlayer,就像在节拍器应用程序中一样,来自 ios 示例。我有以下代码:

BOOL continuePlaying = YES;

while(continuePlaying){

    [_audioPlayer play];
    ...do some other stuff
}

问题是,声音只播放一次——在第一次迭代中。在接下来的迭代中, play 方法似乎没有做任何事情。对于可能出现问题的任何建议,我将不胜感激。

PS:我知道它AVAudiopoayernumberOfLoops属性,但在这种情况下,我想在每次播放之间做一些其他的事情,所以我必须使用循环(我想创建一个节拍器应用程序)。

4

2 回答 2

1

而不是播放while循环,当你的声音完成播放时捕获委托

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

您可以再次开始播放声音并做其他您想做的事情。

在播放声音的情况下循环播放似乎不合逻辑,因为您正在播放多个播放并且这不起作用,

于 2013-04-30T06:29:50.733 回答
0

检查此代码,它对我有用:

dispatch_async(dispatch_get_global_queue(0, 0), ^{
   while (continuePlaying)
   {
       [player play];
       //do your stuffs here
   }
});
于 2013-04-30T06:35:04.647 回答