SKSpriteNode устанавливает цвет в init(NSCoder)

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

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

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?

1 ответ

Вы создали SKSpriteNode:

var player = SKSpriteNode()

Но вы хотите:

var player = PlayerNode()
Другие вопросы по тегам