【发布时间】:2019-03-28 22:49:54
【问题描述】:
我在 SceneKit 中编写了一个函数,该函数将背景音乐作为一个带有键的节点上的动作播放,这样我就可以使用该键停止播放音乐
我有一个全局变量,所以我可以从类中的任何位置调用来停止操作,(顺便说一下,这是 SceneKit 而不是 SpriteKit,不过我仍然使用 Swift 作为一门语言)
var musicPlayingAction = SCNAction()
但是没有什么能阻止它,无论是 forKey 还是 removeAllActions 都...
这没有任何作用
scnScene.rootNode.removeActionForKey("bgMusicKey")
所以我尝试更高级别并向下钻取,终止场景、视图或节点上的所有动作(取决于我附加声音动作的位置)。
self.scnView.scene!.rootNode.removeAllActions()
还是什么都没有……
即使我在特定节点上运行声音动作并试图杀死它.. 你什么也没猜到,或者我应该说音乐仍在播放。
这是函数
func playMusic() {
if game.state == .Playing {
let music = SCNAudioSource(fileNamed: "art.scnassets/Sounds/BgMusic.mp3")!
music.volume = 0.3;
music.loops = true
music.shouldStream = true
music.positional = false
musicPlayingAction = SCNAction.playAudioSource(music, waitForCompletion: false)
scnScene.rootNode.runAction(musicPlayingAction, forKey: "bgMusicKey")
}
}
动作在音乐播放中起作用,但不会停止。
是否可以将 AudioSource 作为动作停止,我知道您可以使用键停止动作,尽管这是我第一次尝试使用键停止音频 SCNAction(注意不是 SKAction)???
任何想法表示赞赏,谢谢。
【问题讨论】: