2015-11-06 62 views
0

我基本上想要在屏幕上添加一個SKSpriteNode,我不知道它出錯的地方。所以我列出了參加這個問題的三個班級的照片。我爲所有背景創建了一個類。在那裏,我使用功能addChild()將56個節點添加到視圖中,但它們不出現在屏幕上。理論上(對我而言)一切都應該起作用。SpriteKit:將SKSpriteNodes添加到視圖

GameViewController

GameScene

Background

希望你可以幫我加入的節點到屏幕上!

編輯:更新了圖片。

回答

1

當調用此:

GameScene().addChild(image) 

你裏面for每次創建本地GameScene對象,添加image到該對象,當你移動到循環的下一次迭代,該對象被銷燬。事實上,你的循環之後是沒有人GameScene對象。

其次,您不需要在hintergrund對象中使用var image = SKSpriteNode()。你每次都將這個引用設置爲新的對象。

你必須在代碼中的交叉引用,儘量使財產以後這樣的:

class GameScene: SKScene { 
    ... 
    override func didMoveToView(view: UIView) { 
     hintergrund.setBackgroundForScene(self, width: screenWidht) 
    } 
} 

class hintergrund { 
    ... 
    class func setBackgroundForScene(gameScene: GameScene, width: CGFloat) { 
     ... 
     for (...) { 
      ... 
      gameScene.addChild(image) 
     } 
    } 
} 
+0

你的解釋是有道理的,我申請我的代碼的變化。可悲的是它仍然不起作用。 –

+0

@LukasKöhl你正在做一個類似的錯誤,並在這一行'hintergrund.setupBackground(screenWidth)'中創建'hintergrund'對象。在這行代碼中創建的對象將在結束'didMoveToView'方法後被刪除 –

+0

當我對'let background = hintergrund()'和'background.setupBackground(screenWidth)'做同樣的事情對我不起作用。我得到一個EXC_BAD_ACCESS錯誤。在我寫的第一部分代碼中。 –