2016-08-08 2 views
0

Я написал функцию в 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) с ключом? ?

Любые идеи оценили, спасибо.

ответ

0

Решенный!

Удалены Действие forKey ...

Разделить мою игру на сцены, добавил состояние игры для каждой сцены, а затем загружены фоновой музыки в зависимости от состояния & сцены.

Благодарим за помощь, очень ценится =)

Смежные вопросы