2016-03-15 64 views
0

我使用的XCode 7.2.1在SceneEditor創建SKSpriteNode(具有自定義類= PlayerNode)SKSpriteNode在初始化設定顏色(NSCoder)

我發現,從一個SKS文件節點的負載與所述方法的init初始化(編碼器:NSCoder)所以在這裏我如何實現迅速

class PlayerNode : SKSpriteNode { 
    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.initializePhysics() 
    } 

    func initializePhysics() { 
     /* blabla */ 
     self.color = SKColor.greenColor() 
     self.colorBlendFactor = 1.0 
     self.blendMode = .Replace 
    } 
} 

當我運行該項目PlayerNode類,節點色不改甚至沒有一點點。 但是,當我改變顏色在GameScene對象的方法didMoveToView,如:

class GameScene: SKScene { 

    var player = SKSpriteNode() 

    override func didMoveToView(view: SKView) { 
     super.didMoveToView(view) 
     self.player = (self.childNodeWithName("player") as? SKSpriteNode)! 

     self.player.color = SKColor.greenColor() 
     self.player.colorBlendFactor = 1.0 
     self.player.blendMode = .Replace 
    } 
} 

現在的顏色變化。 有沒有辦法在PlayerNode類中設置顏色?

回答

0

您創建了一個SKSpriteNode:

var player = SKSpriteNode() 

但是你想:

var player = PlayerNode() 
+0

這並不重要,因爲我在didMoveToView()方法 – Paul

+0

@ user3682658覆蓋的球員你是什麼意思與「不重要「?我寫的是導致你的問題的原因。 100%。 –

+0

@ user3682658您在didMoveToView()中的投射到您的SkSpriteNode也是錯誤的。您的initializePhysics()永遠不會被調用 –