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()