Удаление SKVideoNode не останавливает звук с видео узла

Я добавил SKVideoNode в свою GameScene. Когда я пытаюсь удалить видео, видеоизображение исчезает, но звук продолжает воспроизводиться. Я пытался остановить и приостановить видео перед удалением, но звук продолжает воспроизводиться независимо.

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 ответов

Лучше использовать 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()

    }

}
Другие вопросы по тегам