2017-10-28 5 views
1

AVAudioPlayerのpause()関数でこの予期しない動作が発生しています。 「一時停止」ボタンをクリックすると、実際には現在の時間にオーディオが一時停止し、play()が呼び出されるとオーディオが再開します。しかしここで、一時停止()を押すとオーディオが一時停止し、play()をクリックするとオーディオは最初から再生されます。 pause()はstop()のように動作します。AVAudioPlayer pause()が期待どおりに動作しない

var player: AVAudioPlayer = AVAudioPlayer() 

@IBAction func PlayPauseAudioButton(_ sender: UIButton) { 
    if sender.currentImage == #imageLiteral(resourceName: "play-btn") { 
     sender.setImage(#imageLiteral(resourceName: "pause-btn"), for: .normal) 

     do { 
      let audioPath = Bundle.main.path(forResource: "aug-ps-raj", ofType: "mp3") 
      try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL) 
     } catch { 
      // Catch the error 
     } 
     player.play() 

    } else { 
     sender.setImage(#imageLiteral(resourceName: "play-btn"), for: .normal) 
     player.pause() 

    } 
} 

答えて

2

問題は、再生ボタンをクリックするたびに新しいプレーヤーインスタンスを作成していることです。その代わりに、AVAudioPlayerインスタンスを事前に作成し、ボタンクリックハンドラでplay()およびpause()を呼び出すだけで済みます。

関連する問題