首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法停止背景音乐(Swift 3,Xcode 8)

无法停止背景音乐(Swift 3,Xcode 8)
EN

Stack Overflow用户
提问于 2017-07-01 01:47:38
回答 1查看 269关注 0票数 0

我让一个AVAudioPlayer实例在视图加载时运行。从另一个ViewController,我有一个停止音乐的UISwitch。我可以从交换机接收Bool,并看到它在console中调用正确的函数,但我无法让音乐停止播放。我尝试过停止、暂停和改变音量,但都无济于事。当应用程序关闭(双击主页并向上滑动)并且关闭开关状态时,音乐将不会播放。如果您将开关打开,音乐将会播放,但不会停止。

代码:

代码语言:javascript
复制
var player:AVAudioPlayer = AVAudioPlayer()

let optionDefaults = UserDefaults.standard

override func viewDidLoad() {

    super.viewDidLoad()

    do{

        let audioPath = Bundle.main.path(forResource: "backgroundmusic", ofType: "wav")
        try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
        player.volume = 0.2

        if optionDefaults.value(forKey: "musicOn") != nil  {

            let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
            if musicOn == false  {

                print("********** Music is off **********")
                player.stop()

            }

            else {

                print("********** Music is On **********")
                player.play()

            }  
        } 
    } catch {
       print("AVPlayer did not initialize")
    }

    player.numberOfLoops = -1
}

*开关代码*

代码语言:javascript
复制
 let optionDefaults = UserDefaults.standard

 @IBOutlet weak var musicOnOff: UISwitch!

 var musicOn : Bool = true

 @IBAction func switchToGame(sender: UIButton) {


    if musicOnOff.isOn{

        musicOn = true
        optionDefaults.set(musicOn, forKey: "musicOn")

    }

    if musicOnOff.isOn == false{

        musicOn = false
        optionDefaults.set(musicOn, forKey: "musicOn")

    }}

override func viewDidLoad() {
    super.viewDidLoad()

if optionDefaults.value(forKey: "musicOn") != nil  {

    let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
    if musicOn == false  {

        musicOnOff.isOn = false

    }

    else{

        musicOnOff.isOn  = true

    }
}}
EN

回答 1

Stack Overflow用户

发布于 2017-07-02 00:32:08

你只在视图加载时播放音乐你想在切换切换时停止并播放只需调用palyOrStopMusic completes.If on切换切换操作

代码语言:javascript
复制
var player:AVAudioPlayer = AVAudioPlayer()

let optionDefaults = UserDefaults.standard

override func viewDidLoad() {

super.viewDidLoad()
     playOrStopMusic()
  }

func playOrStopMusic(){
 do{

        let audioPath = Bundle.main.path(forResource: "backgroundmusic", ofType: "wav")
        try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
        player.volume = 0.2

        if optionDefaults.value(forKey: "musicOn") != nil  {

            let musicOn: Bool = optionDefaults.value(forKey: "musicOn") as! Bool
            if musicOn == false  {

                print("********** Music is off **********")
                player.stop()

            }

            else {

                print("********** Music is On **********")
                player.play()

            }  
        } 
    } catch {
       print("AVPlayer did not initialize")
    }

    player.numberOfLoops = -1
}

*开关代码*

代码语言:javascript
复制
 let optionDefaults = UserDefaults.standard

 @IBOutlet weak var musicOnOff: UISwitch!

 var musicOn : Bool = true

 @IBAction func switchToGame(sender: UIButton) {


    if musicOnOff.isOn{
        musicOn = true
        optionDefaults.set(musicOn, forKey: "musicOn")
    }else{
        musicOn = false
        optionDefaults.set(musicOn, forKey: "musicOn")
    }

    playOrStopMusic()
}

override func viewDidLoad() {
    super.viewDidLoad()
    playOrStopMusic()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44852271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档