AVAudioPlayer的方法'play'在while循环中不起作用

时间:2013-04-30 06:14:21

标签: iphone ios avaudioplayer

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

BOOL continuePlaying = YES;

while(continuePlaying){

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

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

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

2 个答案:

答案 0 :(得分:1)

而不是播放while循环,在播放声音时捕捉代表

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

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

在播放声音的情况下循环似乎不合逻辑,因为你正在解雇多个游戏并且不能正常工作,

答案 1 :(得分:0)

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

dispatch_async(dispatch_get_global_queue(0, 0), ^{
   while (continuePlaying)
   {
       [player play];
       //do your stuffs here
   }
});