Удаление 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()
}
}