ARKit 2.0 – 如何阻止音频在 SCNView 中播放?



我正在开发一个播放音频所需的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()
}

但它仍然不起作用。

附言我使用的是iOS 12 beta 9,xCode 10 beta 4和macOS Mojave 10.14

解决方案:问题不在于ARAudio,原因是:SCNAudioPlayer直接添加到节点,我试图将其从子节点中删除。

若要停止音频播放,请使用removeAudioPlayer(_:)实例方法。看这里。

func removeAudioPlayer(_ player: SCNAudioPlayer)

此方法从节点中删除指定的音频播放器,停止播放。

您还可以删除所有音频播放器:

func removeAllAudioPlayers()

若要添加音频播放器,请使用以下实例方法:

func addAudioPlayer(_ player: SCNAudioPlayer)

此方法将指定的自动播放器添加到节点并开始播放。

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新