2013-04-30 44 views
0

我想在循環播放聲音,與AVAudioPlayer一樣,就像ios示例中的節拍器應用程序一樣。我有以下代碼:AVAudioPlayer的方法'play'在while循環內不起作用

BOOL continuePlaying = YES; 

while(continuePlaying){ 

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

問題是,聲音只播放一次 - 在第一次迭代期間。在接下來的迭代中,播放方法似乎沒有做任何事情。對於可能出現錯誤的任何建議,我將不勝感激。

PS:我知道AVAudiopoayernumberOfLoops財產,但在這種情況下,我想要做的每一個劇本有一些其他的東西,所以我必須使用一個循環(我想創造一個節拍器應用程序)。

回答

0

檢查與此代碼,它的工作對我來說:

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

感謝您的回覆和代碼。這工作正常,但我仍然不明白爲什麼派遣解決了這個問題。你能解釋爲什麼AVAudioPlayer每次播放方法執行時都不會播放聲音,就像我在我的原始代碼中預期的那樣? – 2013-05-01 08:53:33

1

而不是當烏爾聲音播放完畢

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

你可以重新開始播放聲音,做你想要做其他的東西打while循環,捕獲代表。

在播放聲音的情況下循環似乎不合邏輯的,因爲你是射擊多種播放,並且不會工作,

+0

感謝您的答覆。我正在嘗試創建一個節拍器應用程序,因此在這種情況下播放循環中的聲音是必要的(我剛將這些信息添加到了我的原始問題中)。 – 2013-05-01 08:41:51