使用skView = view是什么用途! SKView

时间:2016-11-29 18:12:11

标签: ios swift

我是SpriteKit的新手,看到像let skView = view as! SKView这样的代码,那么这有什么用呢?另外,我对viewskViewsceneGameScene之间的区别感到困惑?

class GameViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    let scene = GameScene(size: view.bounds.size)
    let skView = view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .resizeFill
    skView.presentScene(scene)
  }

  override var prefersStatusBarHidden: Bool {
    return true
  }

} 

2 个答案:

答案 0 :(得分:0)

as!表示“强制施放”。 view的值将被投放为SKView。如果此操作失败,因为viewnil或类型不同,代码将崩溃。这就是为什么当你不能100%确定该值的类型时,你应该避免使用as!

相关:

答案 1 :(得分:0)

SKViewUIView的子类,具有SpriteKit功能的附加功能。 as!运算符将UIView的视图向下转换为SKView,以便在SKView中启用viewDidLoad()特定功能。

通常,建议使用as?运算符,因为如果它不成功,它将优雅地失败到nil,而如果转换不成功,as!将使应用程序崩溃。如果您100%确定在这种情况下视图的类型始终为SKView,则使用as!可能是一个适当且不那么详细的选择。

有关详细信息,建议您阅读此Stackoverflow post,其中会比较asas?as!的使用情况。