删除SKVideoNode不会停止视频节点的音频

时间:2018-12-31 22:44:30

标签: swift audio pause skvideonode

我已经在我的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中的音频?

1 个答案:

答案 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()

    }

}