2016-03-08 1 views
2

Dans AVAudioPlayer, après une pause, le morceau ne continue pas, recommencez sur Swift. Le problème est quand je choisis le bouton Pause et encore le bouton Play alors il devrait commencer à partir du début.Dans AVAudioPlayer après une pause, le morceau ne continue pas sur Swift

import UIKit 
import AVFoundation 
class DetailViewController: UIViewController { 

let musicArray:[String] = ["reamon", "sandman"] 

var audioPlayer: AVAudioPlayer? 

var songIndex:Int = 0 

@IBAction func pauseButton(sender: AnyObject) { 
    audioPlayer!.pause() 

} 

@IBAction func playButton(sender: AnyObject) { 

    let mySound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(musicArray[songIndex], ofType: "mp3")!) 

    do{ 
     audioPlayer = try AVAudioPlayer(contentsOfURL: mySound) 
     audioPlayer!.prepareToPlay() 
     audioPlayer!.play() 
    } catch { 
     print("Error getting the audio file") 
    } 

} 

@IBOutlet weak var stopButtonOutlet: UIButton! 

@IBAction func stopButton(sender: AnyObject) { 
    audioPlayer!.stop() 
    audioPlayer!.currentTime = 0 
} 

func playSongAtIndex(index: Int) { 

    songIndex = index 

} 

Répondre

1

Je fais une autre façon. C'est un bouton pour jouer et PAUSE.

@IBAction func playPauseButton(sender: AnyObject) { 

    if (player.playing == true) { 
     player.stop() 
     playPauseButtonOutlet.setImage(UIImage(named: "play.jpg"), forState: UIControlState.Normal) 
    } else { 
     player.play() 
     playPauseButtonOutlet.setImage(UIImage(named: "pause.jpg"), forState: UIControlState.Normal) 
    } 
} 
3

vous INITIALISATION AVAudioPlayer chaque fois sur votre action bouton de lecture essayer d'initialiser votre AVAudioPlayer dans une autre méthode qui appelle essayer une seule fois cette

override func viewWillAppear(animated: Bool) 
{ 
     self .intiAudioPlayer() 
} 

func intiAudioPlayer() 
{ 

     let mySound = NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource(musicArray[songIndex], ofType: "mp3")!) 

    do 
    { 
     audioPlayer = try AVAudioPlayer(contentsOfURL: mySound) 
     audioPlayer!.prepareToPlay() 
    } 
    catch { 
     print("Error getting the audio file") 
    } 
} 

votre action bouton de lecture contiendra uniquement autant de code

@IBAction func playButton(sender: AnyObject) 
{ 
    audioPlayer!.play() 
} 
+0

code sur le bouton de lecture ont besoin que je joue seulement quand son bouton sur le bouton de lecture – Zhanserik

+0

func intiAudioPlayer() va simplement initialiser le AudioPlayer il ne jouera pas le son jusqu'à ce que vous cliquez sur le bouton-poussoir. Assurez-vous d'initialiser votre AudioPlayer avant de cliquer sur le bouton Lecture. Sinon, il ne jouera pas le son. –

+0

Votre méthode ne fonctionne pas – Zhanserik