2017-06-25 4 views
1

Je fais un lecteur audio dans mon projet iOS. -je configurer la méthode play(audioOfUrl:URL, for times:Int) en passant le nom de l'url et combien de fois le fichier audio sera le jeu comme suit:Comment faire le suivi du nombre de boucles dans 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) 
    } 
} 

il y aura un pause() et resume() ainsi, Ce que je dois faire est de garder trace du nombre de boucles restantes du lecteur audio. Par exemple, si je l'appelle la méthode de jeu comme celui-ci:

play(audioOfUrl:audioUrl, for times:5) 

J'ai besoin de garder les yeux sur les temps restant que le fonctionnement du lecteur audio.

J'essaie d'utiliser la méthode AVAudioPlayerDelegate, mais cela ne fonctionne pas, comment garder les yeux sur le audio.numberOfLoops? Merci d'avance.

Répondre

2

Vous pouvez vous abonner à la notification AVPlayerItemDidPlayToEndTime et compter le nombre de fois que le gestionnaire de cette notification a été appelé.

NotificationCenter.default.addObserver(self, selector:#selector(playerItemDidReachEnd(_:)), 
          name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, 
          object: audioPlayer.currentItem)