【发布时间】:2021-06-22 21:09:58
【问题描述】:
我正在尝试制作游戏,在主菜单中,有一个标签可以开始音乐,另一个标签可以停止音乐。
let backgroundMusic = SKAction.playSoundFileNamed("background.mp3", waitForCompletion: false)
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
let touchedNode = atPoint(location)
if touchedNode.name == self.BEGIN_MUSIC {
// start music
self.run(backgroundMusic)
}
if touchedNode.name == self.STOP_MUSIC {
// stop music
SKAction.stop()
}
}
}
音乐开始很好,适用于我想要的所有场景。但是当我按下停止音乐时,音乐继续播放。如何停止音乐。
我尝试过 SKAction.pause(),我尝试过使用 withKey: "music" 然后 self.removeAction(forKey: "music")。
我也尝试过制作 backgroundMusic: SKAudioNode 并且这很有效,但是一旦我停止了音乐,我就无法重新打开它,而且它在任何其他场景中都不起作用,只是主菜单。
如何停止声音?
【问题讨论】:
-
您将需要改变播放音乐的方法。根据开发者文档,SKAction.playSoundFileNamed 应该用于短声音,而 AVAudioPlayer 应该用于长时间运行的背景音乐。
标签: ios swift xcode sprite-kit skaction