1

バッファ内のオーディオファイルの再生をループするために使用してAVAudioPlayerNodeおり、ユーザーが次をクリックしたときに次のトラックに切り替えることができる必要がありますが、ユーザーが次をクリックするとすぐにではなく、ループの最後に切り替えます

再生を開始するために使用するコードは次のとおりです

if loopPlayback == true {  
    audioPlayer.scheduleBuffer(buffer, at: nil, options: .loops, completionHandler: nil)
    audioPlayer.play()
    playPauseToggleState()  
}
4

1 に答える 1

1

の関数の引数でAVAudioPlayerNodeBufferOptions.interruptsAtLoopオプションを使用します。次に例を示します。optionsAVAudioPlayerscheduleBuffer

self.player.scheduleBuffer(self.buffer, at: nil, options: [.interruptsAtLoop, .loops])

このコード行は、バッファーが永久にループ再生されるようにスケジュールします。すでに再生中のものがあれば、ループの反復が終了するとすぐに中断されます。それ以外の場合は、すぐに再生が開始されます。もちろん、プレイヤー ノードが現在再生中であることを前提としています。

于 2020-01-16T10:17:55.810 に答える