class MyClass: UIViewController {
var playerViewController = AVPlayerViewController()
var playerView = AVPlayer()
var playerTimer = NSTimer()
override func viewDidAppear(animated:Bool) {
super.viewDidAppear(true)
presentViewController(GameViewController1(), animated: false, completion: nil)
let fileURL = NSURL(fileURLWithPath: "SomeFile.mp4")
playerView = AVPlayer(URL: fileURL)
playerViewController.player = playerView
self.presentViewController(playerViewController, animated: false){
self.playerViewController.showsPlaybackControls = false
self.playerViewController.player?.play()
self.playerTimer = NSTimer.scheduledTimerWithTimeInterval(4.2, target: self, selector:Selector("stopAfter4seconds:"), userInfo: nil, repeats: false)
}
}
func stopAfter4seconds(timer: NSTimer){
playerViewController.player = nil
playerViewController.removeFromParentViewController()
playerTimer.invalidate()
playerViewController.presentViewController(GameViewController1(), animated: false, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
「MyClass」(Class Above) でビデオを再生した後
次に、ビューを削除し、GameScene を持つ GameContollerView1 を提示します。
(下のクラス)
class GameViewController1: UIViewController, ADBannerViewDelegate {
@IBOutlet var skView: SKView!
override func viewDidLoad() {
super.viewDidLoad()
if skView.scene == nil {
let scene = GameScene(size: skView.bounds.size)
skView.presentScene(scene)
}
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return UIInterfaceOrientationMask.AllButUpsideDown
} else {
return UIInterfaceOrientationMask.All
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
私の最初の問題は、クラス「GameViewController1」を提示するとエラーが発生することです。
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
この行で:
if skView.scene == nil {
つまり、私の SKView! 私のifステートメントからわかるように、これはnilです。とにかく探していたものです。
これに関する最も奇妙な部分は、「MyClass」をスキップして、最初に StoryBoard エントリ ポイントを GameViewContoller1 にポイントすると、すべてのコードが正しく再生されることです。
AVPlayer() はこれと関係がありますか? 論理的には私のコードは機能するはずですが、何らかの理由で..そうではありません。どんな助けでも大歓迎です。