2016-12-22 1 views
0

В моей программе, которую я делаю, я пытаюсь создать два разных типа фигур с разными текстурами, которые имеют один и тот же класс.Текстуры классов меняются, но не отображаются

Поскольку этот класс является подклассом, я должен установить текстуру текстуры по умолчанию в super.init. Я меняю текстуру, но при запуске программы появляется только текстура по умолчанию.

Я попытался распечатать текстуру, и она говорит, что текстура была изменена. Что происходит?

Примечание: Я использую шашки для проверки в качестве подставки. Красная контрольная фигура - это стенд в одном (и один для красной команды). Изображение должно отображать черный клетчатой ​​кусок

Вот проблема:

enter image description here

Вот является распечатка.

enter image description here

Вот код для нереста и для стрелкам класса:

func spawnBlueRiflemen(at: CGPoint) { 
     let newBlueRifle = rifleman() 
     newBlueRifle.texture = textureBlueRifle 
     newBlueRifle.position = at 
     newBlueRifle.team = "Blue" 
     print("\(newBlueRifle.texture)") 
     self.addChild(newBlueRifle) 
    } 

class rifleman: Character, pTargetable{ 
    var health = 10 
    init() { 
     super.init(tag: 0, team: "generic", currentAction: 0, texture: textureRedRifle) 
     var xSize = texture.size().width   // Create The texture for the top (visible sprite) 
     var ySize = texture.size().height 
     var size = CGSize(width: xSize, height: ySize) 
     self.physicsBody = SKPhysicsBody(texture: texture, size: size) 
     self.physicsBody?.isDynamic = false 
     self.physicsBody?.affectedByGravity = false   // (physical body stuff) 
     self.physicsBody?.mass = 1.0 
     self.name = "\(tag)" 
     var top = SKSpriteNode(texture: texture, size: size) 
     top.zPosition = layers.characters 
     top.color = SKColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) 
     top.colorBlendFactor = 1.0 
     self.addChild(top) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func takeDamage(damage: Int) { 
     health -= damage 
     print("\(tag) lost \(damage) hit points") 

     if health <= 0 { 
      die() 
      print("\(tag) is dead now") 
     } 
    } 

} 

ответ

0

Вы должны инициализировать «текстуру» внутри подкласса «стрелкам», чтобы сделать текстуру изменчива.

E.g.

....

class rifleman: Character, pTargetable{ 
    var health = 10 
    init(texture: SKTexture) { 
     super.init(tag: 0, team: "generic", currentAction: 0, texture: texture) 

....