如果不播放,则播放音乐,但如果已经播放,则不播放音乐(Xcode,Swift4)

时间:2018-11-21 12:44:36

标签: ios swift4 xcode10

我对AVFoundationAVAudioPlayer有疑问。

在我的项目中,我有一个视图,您从那里开始,还有一个动作发生在哪里。当我启动该应用程序时,我告诉第一个视图开始播放我的背景音乐,当用户处于第二个视图中时,它必须继续播放。但是,只要您回到第一个视图,即使它已经在播放,它也会再次开始播放歌曲。因此,我最终得到了很多回声。 如何防止这种情况发生?

这是我尚未使用的代码:

import UIKit
import AVFoundation

class StartViewController: UIViewController {
    var backgroundPlayer = AVAudioPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        //background music file
        let sound = Bundle.main.path(forResource: "background_music", ofType: "mp3")

        do {
            backgroundPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: sound!))
        }
        catch {
            print(error)
        }

        playBackgorundMusic()
    }

    func playBackgorundMusic() {
        if backgroundPlayer.isPlaying {
            //do nothing
        } else {
            backgroundPlayer.play()
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您应该为音乐播放器设置单人课程,以保持播放,暂停,停止等状态。

class MusicPlayerManager{

    static let shared = MusicPlayerManager()
    var backgroundPlayer = AVAudioPlayer()

    init(){}

    func playMusic(){
        if backgroundPlayer.isPlaying {
            //do nothing
        } else {
            backgroundPlayer.play()
        }
    }

}