2015-01-07 35 views
0

所以我試圖做的是你可以在最短時間看到的。 8在着名的「608最佳做法建設spritekit遊戲」,但在Swift語言。 基本上從另一個.sks文件中的SKScene複製子節點。複製.sks文件中的節點

我只是設法做到了這點,但是程序停止了一個自動斷點,並帶有這個消息「Swift dynamic cast failed」。我不知道什麼是錯的......我的意思是,我知道這條線,但我不明白copy()方法是如何工作的。

這裏是我的代碼:

class GameScene: SKScene { 

var camera = SKNode() 
var player = SKNode() 

override func didMoveToView(view: SKView) { 
    camera = childNodeWithName("Camera")! as SKNode 
    player = camera.childNodeWithName("player")! as SKNode 

    var child = SKNode() 
    for child in SKScene.unarchiveFromFile("Player")!.children { 
//Here is the line i doubt of 
     player.addChild(child.copy() as SKNode) 
    } 
} 

//etc etc... 

提前感謝:d

編輯: 是啊,我創建了另一個項目只是嘗試這種方法,並是的它仍然在該斷點處停止。沒有錯誤,只是在我按下運行後停在那裏。

也有一些是錯誤的驗證碼...

var nodeToFill = SKNode() 

override func didMoveToView(view: SKView) { 
    nodeToFill = childNodeWithName("nodeToFill")! 

    var child = SKNode() 
    for child in SKScene.unarchiveFromFile("fillNode")!.children { 
     child.removeFromParent() 
     nodeToFill.addChild(child as SKSpriteNode) 
    } 

,這是它停止... (不能張貼圖片...) HTTP://i.stack。 imgur.com/m6RRg.png

編輯2: 好了,所以我把日誌和堆棧幀不作爲文本,以避免使頁面太長......在這裏,他們是:

日誌:http://i.stack.imgur.com/iP7JP.png 堆棧:http://i.stack.imgur.com/JReFU.png

停止的行是調用unarchiveFromFile方法的位置。這與該方法有關,但我不知道有什麼問題

+0

您可以將圖像作爲文本複製並粘貼(選擇和複製),但其內容不相關。調用堆棧,日誌和發生錯誤的代碼行會有所幫助。 – LearnCocos2D

+0

此外,如果sks場景之後被拋棄,則不需要複製節點。相反,對於每個節點,你可以/應該調用它的removeFromParent方法,然後添加它作爲孩子,但不復制它 – LearnCocos2D

+0

希望我添加了正確的東西!不太熟悉那些日誌和堆棧框架......完全沒有:/無論如何,代碼是第一次編輯中的代碼。雖然... – andrello

回答

0

解決了它。 我只需要用for child in GameScene.unarchiveFromFile("fillNode")!.children替換 for child in SKScene.unarchiveFromFile("fillNode")!.children。 只需將「SKScene」替換爲「GameScene」