2016-02-13 4 views
0

Я пытаюсь инициализировать пользовательский класс, который наследуется от SKSpriteNode. В настоящее время определение класса выглядит следующим образомдобавить настраиваемое свойство в пользовательский класс и инициализировать класс

import SpriteKit 

class PassengerNode: SKSpriteNode { 
let passengerStart: Int = 2 
let passengerDestination: Int = 0 

init() { 
    let texture = SKTexture(imageNamed: "passenger1")   
    super.init(texture: texture, color: UIColor.clearColor(), size: texture.size()) 
    self.zPosition = 100 
} 

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

func updateTexture(newTexture: SKTexture) { 
    self.texture = newTexture 
} 

}

Я хочу иметь passengerStart и passsengerDestination, присвоенный объект, соответственно, к экземпляру класса. И в идеале эти оба значения могут быть разными с каждым экземпляром.

Когда я экземпляр объекта класса, я думаю, что-то вроде

let newObject = PassengerNode(start: 1, destination: 0, texture: "passenger1") 

Но я не получаю это работает ... Как мне нужно изменить инициализации? Есть ли у кого-то помощь?

Заранее спасибо.

ответ

0

Вы должны написать метод инициализации для подкласса, который принимает эти три параметра:

class PassengerNode: SKSpriteNode { 
    let passengerStart: Int 
    let passengerDestination: Int 

    init(start: Int, destination: Int, texture: String) { 
     let texture = SKTexture(imageNamed: texture) 
     passengerStart = start 
     passengerDestination = destination 
     super.init(texture: texture, color: UIColor.clearColor(), size: texture.size()) 
     self.zPosition = 100 
    } 

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

    // ... more methods ... 
} 

Метод инициализации должен инициализировать свойство подкласса и затем вызвать super.init.

Смежные вопросы