2017-06-25 3 views
1

私はiOSプロジェクトでオーディオプレーヤーを作っています。 次のようにURLの名前と何回オーディオファイルがプレイになりますを渡すことplay(audioOfUrl:URL, for times:Int)方法Iセットアップ:AVAudioFoundationのループ数を追跡する方法

func play(audioOfUrl:URL, for times:Int) { 

    let urlPath = audioOfUrl 
    loopsLeftOver = times 
    do { 

     let audio = try AVAudioPlayer.init(contentsOf: urlPath) 
     audioPlayer = audio 
     audio.play() 
     audio.numberOfLoops = times - 1 


    } catch let error { 
     print(error.localizedDescription) 
    } 
} 

私が行うために必要なものだけでなくpause()resume()があるでしょうが維持されますオーディオプレーヤーが残したループの数を追跡します。私はこのようなプレイメソッドを呼び出した場合 はたとえば、:

play(audioOfUrl:audioUrl, for times:5) 

を私は、オーディオプレーヤーのランニングとして残り時間に目を維持する必要があります。

私はAVAudioPlayerDelegateメソッドを使用しようとしましたが、動作していません。どのようにaudio.numberOfLoopsを見守りますか?前もって感謝します。

答えて

2

AVPlayerItemDidPlayToEndTime通知をサブスクライブし、この通知のハンドラが何回呼び出されたかをカウントできます。

NotificationCenter.default.addObserver(self, selector:#selector(playerItemDidReachEnd(_:)), 
          name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, 
          object: audioPlayer.currentItem) 
関連する問題