4

一時停止後に AVAudioPlayer で曲が継続しない場合は、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

}
4

2 に答える 2

5

再生ボタンのアクションで毎回 AVAudioPlayer を初期化しています 1 回だけ呼び出される他のメソッドで AVAudioPlayer を初期化してみてください これを試してください

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")
    }
}

再生ボタンのアクションには、この量のコードのみが含まれます

 @IBAction func playButton(sender: AnyObject) 
{
   audioPlayer!.play() 
}
于 2016-03-08T10:47:34.157 に答える
2

私は別の方法で行います。再生と一時停止はボタン一つです。

@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)
    }
}
于 2016-04-24T13:14:02.230 に答える