我是SpriteKit的新手,看到像let skView = view as! SKView
这样的代码,那么这有什么用呢?另外,我对view
和skView
,scene
和GameScene
之间的区别感到困惑?
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
}
}
答案 0 :(得分:0)
as!
表示“强制施放”。 view
的值将被投放为SKView
。如果此操作失败,因为view
为nil
或类型不同,代码将崩溃。这就是为什么当你不能100%确定该值的类型时,你应该避免使用as!
。
相关:
答案 1 :(得分:0)
SKView
是UIView
的子类,具有SpriteKit功能的附加功能。 as!
运算符将UIView
的视图向下转换为SKView
,以便在SKView
中启用viewDidLoad()
特定功能。
通常,建议使用as?
运算符,因为如果它不成功,它将优雅地失败到nil
,而如果转换不成功,as!
将使应用程序崩溃。如果您100%确定在这种情况下视图的类型始终为SKView
,则使用as!
可能是一个适当且不那么详细的选择。
有关详细信息,建议您阅读此Stackoverflow post,其中会比较as
,as?
和as!
的使用情况。