我正在开发播放音频所需的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)
并像@Andy所说的那样将其删除:
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已直接添加到节点,而我试图将其从子节点中删除。
答案 0 :(得分:1)
要停止音频播放,请使用removeAudioPlayer(_:)
实例方法。 Look here。
func removeAudioPlayer(_ player: SCNAudioPlayer)
此方法从节点中删除指定的音频播放器,从而停止播放。
您还可以删除所有音频播放器:
func removeAllAudioPlayers()
要添加音频播放器,请使用以下实例方法:
func addAudioPlayer(_ player: SCNAudioPlayer)
此方法将指定的自动播放器添加到节点并开始播放。
希望这会有所帮助!