Я разрабатываю приложение AR, которое необходимо для воспроизведения звука.
Я сделал это как:
guard let audioSource = SCNAudioSource(fileNamed: "sample.mp3") else { return }
audioSource.loops = false
audioSource.load()
node.runAction(SCNAction.playAudio(audioSource, waitForCompletion: false))
Он отлично работает, за исключением того, что я не могу остановить его от игры.
Я также пробовал:
node.enumerateChildNodes { (childNode, _) in
childNode.removeAllAudioPlayers()
childNode.removeFromParentNode()
}
Но он все еще играет.
Кто-нибудь знает, как это остановить?
Обновление:
Я уже попробовал:
guard let audioSource = SCNAudioSource(fileNamed: "sample.mp3") else {return}
audioSource.load()
player = SCNAudioPlayer(source: audioSource)
node.addAudioPlayer(player)
и удалите его так, как сказал @ Энди:
node.enumerateChildNodes { (childNode, _) in
childNode.removeAudioPlayer(player)
childNode.removeFromParentNode()
}
но он все еще не работает.
P.S. Я использую iOS 12 beta 9, xCode 10 beta 4 и macOS Mojave 10.14
Решение: проблема была не в ARAudio, причина была в том, что SCNAudioPlayer был добавлен непосредственно к узлу, и я пытался удалить его из дочернего узла.