Я написал функцию в SceneKit, которая воспроизводит фоновую музыку как действие на узле с помощью клавиши, чтобы я мог остановить воспроизведение музыки с помощью клавишиОстановка звука как действие на узле с ключом в SceneKit
у меня есть глобальная переменная, так что я могу позвонить, чтобы остановить действие из любого места в классе, (кстати, это SceneKit не SpriteKit, я до сих пор с помощью Swift как язык, хотя)
var musicPlayingAction = SCNAction()
однако ничего останавливает его, либо forKey, либо removeAllActions, как в ...
Th есть ничего не делает
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")
}
}
Действие работает как в музыкальных спектаклях, но это не остановит.
Возможно ли остановить аудиоинтерфейс как действие, я знаю, что вы можете остановить действия с помощью ключа, хотя это первый раз, когда я пытался остановить аудио SCNAction (обратите внимание, что не SKAction) с ключом? ?
Любые идеи оценили, спасибо.