繁体   English   中英

如何在Swift中使用按钮和if / else来停止背景音乐?

[英]How to stop background music with button and if/else in Swift?

在我的游戏中,我为GameScene添加了一个按钮并播放音乐:

let url = NSBundle.mainBundle().URLForResource("Happy Background Music", withExtension: "mp3")
let bgMusic = AVAudioPlayer(contentsOfURL: url, error: nil)

@IBAction func SoundOnOff(sender: UIButton) {
    bgMusic.numberOfLoops = -1
    bgMusic.play()
}

播放的音乐,但我想添加一个if,当按下按钮时音乐将停止。 如果我应该写什么?

AVAudioPlayer具有内置属性playing ,您可以使用它来决定是播放还是暂停音乐:

@IBAction func SoundOnOff(sender: UIButton) {
    if bgMusic.playing {
        bgMusic.pause()
    } else {
        bgMusic.numberOfLoops = -1
        bgMusic.play()
    }
}

用这个改变你的代码,

 let url = NSBundle.mainBundle().URLForResource("Happy Background Music", withExtension: "mp3")

    do{
        let bgMusic = try AVAudioPlayer(contentsOfURL: url!)
    }catch{
        print(error)
    }


@IBAction func SoundOnOff(sender: UIButton) {

if bgMusic.playing {
        bgMusic.stop()
    } else {
        self.bgMusic.play()
    }
}

编辑:说明

玩 - 财产
- 一个布尔值,指示音频播放器是否正在播放(true)或不播放(false)。 (只读)

刚刚看到这只适用于iOS9及更高版本。 因此,如果你的目标是iOS9,那么这是可能的。

如果您使用SpriteKit编写游戏,我建议您使用SKAudioNode类来播放您的BGMusic。

let url = NSBundle.mainBundle().URLForResource("Happy Background Music", withExtension: "mp3")
let audioNode = SKAudioNode(URL:url)
audioNode.positional = false
audioNode.autoplayLooped = true
self.addChild(audioNode)

要暂停音乐,您需要创建一个SKAction ...

let pauseAction = SKAction.pause()
audioNode.runAction(pauseAction)

您也可以恢复它,但只是试图找到它的代码...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM