在Spritekit Swift中停止音频

时间:2015-12-23 19:50:43

标签: xcode swift sprite-kit

我正在使用以下代码在我的MENU SKScene上播放音乐:

在SKScene下,我宣布音乐动作:

class MENU: SKScene {
let action: SKAction = SKAction.playSoundFileNamed("gameMusic.wav", waitForCompletion: false)

在接触开始的方法中,我在触摸按钮时播放声音。

    self.runAction(action, withKey:"stopIce")

在我的didMoveToView下:我有以下代码在MENU场景加载时停止音乐。

    self.removeActionForKey("stopIce")

当我触摸MENU SkScene上的按钮并转到我的关卡场景时,音乐播放完美。但是,当我转换回按钮所在的MENU Skene时,代码不会停止音乐?

self.removeActionForKey("stopIce")

我想在你回到MENU场景时停止所有声音,这样如果玩家触摸按钮再次转到Level SKScene,音乐就不会同时播放2首曲目。谢谢:))

2 个答案:

答案 0 :(得分:5)

如果您能够定位iOS 9,那么就有一个非常棒的解决方案:SKAudioNode。它可以让您随时播放音乐并停止播放,并且当它连接到节点时会自动循环播放。

要尝试一下,请创建一个这样的属性:

var backgroundMusic: SKAudioNode!

然后将其添加到didMoveToView()

backgroundMusic = SKAudioNode(fileNamed: "music.m4a")
addChild(backgroundMusic)

这就是开始玩所需要的一切!如果要停止,请使用:

backgroundMusic.runAction(SKAction.stop())

答案 1 :(得分:2)

音频将继续播放,直到完成我相信,所以你需要做的是暂停它所在的SKNode。如果SKNode是一个您不想暂停的精灵,那么只需将子子项添加到专门用于播放音频的精灵中,然后暂停子节点