2016-06-09 73 views
0

如何將sks文件SKNode轉換爲該節點的子類?遇到與here相同的問題,它說在sks編輯器中設置自定義類和模塊,但該答案不起作用!無法將SKNode從.sks文件轉換爲自定義類

我已經在SpriteKit場景編輯器中的一個空SKNode下構建了一個SKSpriteNodes組件,它使用空節點作爲構成該組件的根部。根SKNode.name被設置爲「ship」,並且自定義類字段被設置爲「BasicShip」,這是我嘗試轉換的類。該模塊設置爲項目名稱(在構建設置中確認爲模塊名稱)。

我正在使用自定義SKNode子類向船舶添加動態,例如,推力功能等。

通過childNodeWithName()檢索節點返回一個可選(SKNode),而不是我的自定義類。將返回的節點投射到我的自定義類編譯時會在運行時崩潰。

檢查didMoveToView()中的場景節點將「ship」節點顯示爲通用SKNode,因此自定義類不會接收sks文件,也不能在運行時將其轉換爲一個。

let world = self.childNodeWithName("world") 
let ship = world!.childNodeWithName("ship") as! BasicShip 
ship.thruster1.throttle = 0.5 
ship.thruster2.throttle = 0.5 

停止與消息:Could not cast value of type 'SKNode' (0x1001dcc60) to 'Lander001.BasicShip' (0x10000f2a0).我的自定義類是從SKNode繼承,所以劇組應該不會有問題吧?

(Xcode的7.2.1版,OSX 10.10 < - 難道是OSX版VS iOS的事情我想雙方最終運行?)

+0

在場景中四處挖掘,節點應該在哪裏,所以問題依然存在**爲什麼SKNode的已知實例無法轉換爲該節點的子類?**並且其原點是a。 sks文件與它有什麼關係? – rebusB

+0

在sks文件中,您是否將您的船設置爲BasicShip自定義類? –

+0

是的,模塊如上所述...但要清楚,將其設置在「ship」SKNode不是我假設的最高級別將用於設置自定義SKScene。 – rebusB

回答

0

我相信裏面world存在具有ship姓名另一個節點。這是你正在檢索的那個。檢查你的項目,並確保你沒有添加另一個SKNode名爲ship世界。

+0

有趣的想法...我會檢查命名。 (儘管我仍然很震驚,迅速3次更改) – rebusB

+0

scenesSKNodes中沒有重複的名稱。 – rebusB

相關問題