我已经在我的GameScene中添加了一个SKVideoNode。当我尝试删除视频时,视频图像消失,但是音频继续播放。我试图在删除视频之前先停止和暂停视频,但是无论如何,音频都会继续播放。
var introVideoIsPlaying = false
var introVideo: SKVideoNode!
func playIntroVideo() {
introVideoIsPlaying = true
if let videoURL = Bundle.main.url(forResource: "video", withExtension: "mp4") {
introVideo = SKVideoNode(url: videoURL)
introVideo.position = CGPoint(x: frame.midX, y: frame.midY)
introVideo.size = self.frame.size
self.addChild(introVideo)
introVideo.play()
}
}
然后我删除触摸中的视频开始-
if introVideoIsPlaying == true {
introVideo.removeFromParent()
}
我可能会缺少什么?有没有一种方法可以独立停止SKVideoNode中的音频?
答案 0 :(得分:1)
最好将AVPlayer与SKVideoNose结合使用,如下所示:
(您将有更多选择来控制视频)
var player: AVPlayer?
player = AVPlayer(url: videoURL)
let videoNode = SKVideoNode(avPlayer: player!)
然后,您可以使用在节点更改时随时触发的didUpdate函数。您可以在节点不可见时暂停视频,如下所示
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
if node.isHidden == true {
print("Node is out of view")
self.player?.pause()
}
}