无法将“SCNView”类型的值转换为“SKView”

时间:2016-09-22 14:39:53

标签: swift runtime

我正在按照教程在Swift中使用XCode 7创建一个“俄罗斯方块”游戏。我按照本教程中的每一步操作,但是我遇到了运行时错误:

无法将'SCNView'(0x106c19778)类型的值转换为'SKView'(0x1068fcad0)。

我的GameViewController.swift如下:

import UIKit
import SceneKit
import SpriteKit

class GameViewController: UIViewController {

    var scene: GameScene!
    var swiftris:Swiftris!

    override func viewDidLoad() {
        super.viewDidLoad()

        //Configure the view
        let skView = view as! SKView

        skView.multipleTouchEnabled = false
        //Create and configure the scene
        scene = GameScene(size: skView.bounds.size)
        scene.scaleMode = .AspectFill
        scene.tick = didTick
        swiftris = Swiftris()
        swiftris.beginGame()

        //Presente the scene.
        skView.presentScene(scene)

        scene.addPreviewShpaeToScene(swiftris.nextShape!){
            self.swiftris.nextShape?.moveTo(StartingColumn, row: StartingRow)
            self.scene.movePreviewShape(self.swiftris.nextShape!){
                let nextShapes = self.swiftris.newShape()
                self.scene.startTicking()
                self.scene.addPreviewShpaeToScene(nextShapes.nextShape!) {}
            }
        }
    }

    override func prefersStatusBarHidden() -> Bool {     
        return true   
    }

    func didTick(){
        swiftris.fallingShape?.lowerShapeByOneRow()
        scene.redrawShape(swiftris.fallingShape!, completion: {})
    }
}

我已经在谷歌和这里搜索了它,我没有找到任何与SCNView和SKView相关的内容。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我确实发现了我的代码问题。我将SKView实例化为GameViewController中的视图:

self.view = SKView()    
let skView = view as! SKView

在我这样做之前,我试图在故事板中将视图的类更改为SKView,但这是不可能的。

我要感谢您的修改。