0

AVAudioPlayeriOSの例から、メトロノームアプリのように、ループでサウンドを再生したいと思います。次のコードがあります。

BOOL continuePlaying = YES;

while(continuePlaying){

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

問題は、サウンドが最初の反復中に 1 回だけ再生されることです。次の反復では、 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 に答える