2016-08-22 2 views
0

Я создал игру, в которой есть экран начального меню. На этом экране меню, я хочу видео (я записал меня, играя в эту игру через симулятор iPhone 6), чтобы играть на фоне этого экрана меню. Я получил видеоролик, но, что происходит, когда загружается представление, он отображает меню, затем он покажет видео, заменяющее само меню.Видео, воспроизводимое на фоне SKScene

import SpriteKit 
import UIKit 
import AVFoundation 




class MenuScene: SKScene { 


var player:AVPlayer! 
var VideoSprite:SKVideoNode! 





override func didMoveToView(view: SKView) { 
let videoURL: NSURL = NSBundle.mainBundle().URLForResource("startTo32", withExtension: "mov")! 

    player = AVPlayer(URL: videoURL) 
    player?.actionAtItemEnd = .None 
    player?.muted = true 


    let playerLayer = AVPlayerLayer(player: player) 
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
    playerLayer.zPosition = -100 


    playerLayer.frame = view.frame 

    player?.play() 


    NSNotificationCenter.defaultCenter().addObserver(self, 
                selector: #selector(MenuScene.loopVideo), 
                name: AVPlayerItemDidPlayToEndTimeNotification, 
                object: nil) 

    view.layer.addSublayer(playerLayer) 


} 



func loopVideo() { 
    player?.seekToTime(kCMTimeZero) 
    player?.play() 
} 

-------- ОБНОВЛЕНИЕ --------

Here's the link to see what I'm talking about. экран со словами, где я пытаюсь получить видео, чтобы играть, но вместо этого он просто заставляет экран белым, а затем воспроизводит видео.

Любые вопросы или необходимость в добавлении информации, просто комментарий.

Спасибо, Иордания.

ответ

1

Попробуйте использовать ваш вместо добавления слоя к вашему виду.

Что-то вроде этого:

let videoURL: NSURL = NSBundle.mainBundle().URLForResource("startTo32", withExtension: "mov")! 
VideoSprite = SKVideoNode(url: videoURL) 
self.addChild(VideoSprite) 
VideoSprite.play() 

документация доступна here.

+0

Это сработало. Но как изменить его размер. Это слишком большое. Как показано, он увеличен. Я продолжаю пытаться «VideoSprite.size = CGSize (self.frame)», но я получаю сообщение об ошибке. –

+0

Вместо этого попробуйте 'VideoSprite.size = self.frame.size'. Вы пытаетесь построить 'CGSize' из' CGRect' (frame), поэтому вы получаете ошибку. – nathan

+0

Спасибо за оба ответа. Проведите отличную ночь (Нью-Йорк). –

Смежные вопросы