2016-08-22 12 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() 
} 

-------- -------- UPDATE

私は再生するビデオを取得しようとしている場所を言葉で画面がある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'を試してください。 'CGRect'(フレーム)から' CGSize'を構築しようとしています。なぜなら、あなたはエラーを受けているからです。 – nathan

+0

両方の答えに感謝します。素晴らしい夜を過ごしてください(ニューヨーク)。 –

関連する問題