2016-09-17 37 views
0

在我的GameScene.sks中,我有一個代表「球」的SKSpriteNode。使用.sks文件初始化SKSpriteNode的子類Xcode 8

我需要繼承SKSpriteNode爲球:

class Ball:SKSpriteNode { 
    //custom init 
} 

在我的場景,我將在.sks使用SKSpriteNode喜歡的init我的球。

由於我使用的Xcode 8,我試圖用自定義類在我SKSpriteNode:

enter image description here

self.ball = self.childNode(withName: "ball") as! Ball 

但在這行我的應用程序崩潰...... 還有我不知道如何爲我的子類創建自定義初始化程序。

FYI我寧願避免像什麼:

class Ball:SKNode { 
    var sprite:SKSpriteNode! 
} 

let ball = Ball() 
ball.sprite = self.childNode(withName: "ball") as? SKSpriteNode 
+0

你爲什麼鑄造'Ball'到'Puck'? –

+0

@appzYourLife只是一個錯誤:) – cmii

+0

這是蘋果的一個很好的例子,它沒有解釋如何從SpriteKit場景編輯器獲取某些東西到代碼中,並從那裏玩它。場景編輯器和代碼存在於兩個不同的世界中,而它們之間的橋樑是由麻線構成的,那些理解的東西沒有解釋。 – Confused

回答

0

我覺得這裏的問題是,你沒有指定名稱爲您在場景編輯器中添加精靈。

你可以檢索你的精靈尋找類型而不是搜索名稱

試試這個

self.ball = self.children.flatMap { $0 as? Ball }.first! 
+0

我的球在場景編輯器中我的SKSpriteNode的屬性中被命名爲「球」。 – cmii