2016-03-15 6 views
0

Я использую XCode 7.2.1 для создания SKSpriteNode в SceneEditor (с пользовательским классом = PlayerNode)настройка цвета в Init (NSCoder)

Я обнаружил, что узел загрузка из файла SKS инициализируется с помощью метода инициализации SKSpriteNode (кодировщик: NSCoder) так вот, как я реализовать класс PlayerNode в быстрой

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 
    } 
} 

Когда я запустить проект, цвет узла не изменяются даже не мало. Но когда я изменить цвет в методе didMoveToView объекта GameScene, как:

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 Ваш приведение в ваш SkSpriteNode в вашем didMoveToView() также неверно. Ваш initializePhysics() никогда не называется –