2016-11-29 68 views
0

我是SpriteKit的新手,看到let skView = view as! SKView這樣的代碼,那麼這是什麼用途?我也對viewskView,sceneGameScene之間的差異感到困惑嗎?什麼是讓skView = view as的用法! SKView

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

什麼是「!」作爲後? –

+4

你感到困惑的事情是非常基本的(鑄造,變量名稱,類)。在我看來,你正在超越自己,並應該從基礎開始學習Swift。 – EmilioPelaez

+0

我知道它的鑄造視圖到SKView但什麼是「!」的用法? –

回答

0

as!意思是「強制施放」。 view的價值爲SKView。如果這失敗了,因爲viewnil或不同類型,代碼將崩潰。這就是爲什麼你應該避免使用as!當你不是100%確定價值是什麼類型。


相關:

+0

謝謝你的回答!那很完美。視圖和SKView之間的關係是什麼? –

+0

通常,UIViewController的'view'屬性的類型是'UIView'。要編輯一些像'showsFPS'這樣的屬性(它只能在'SKView'中使用,它是'UIView'的一個子類),你需要告訴編譯器,在這種情況下,'view'將是'SKView'類型的。 – FelixSFD

+0

謝謝。我在哪裏可以知道所有這些關係?任何書或地方談論這些? –

0

SKViewUIView具有用於SpriteKit功能的附加功能的子類。 as!運營商將UIView的視圖向下轉換爲SKView,以便在viewDidLoad()中使用SKView特定功能。

通常,建議使用as?運算符,因爲如果運行不成功,它將優雅地失敗nil,而as!將在應用程序失敗時崩潰。如果您100%確定在這種情況下您總是會看到類型爲SKView的視圖,那麼使用as!可能是一個適當且較不詳細的選擇。

欲瞭解更多信息,我建議閱讀Stackoverflow post比較使用as,as?,和as!

+0

我們可以分配SKView類的對象而不是轉換嗎?也許就像讓skView = SKView() –