将自定义属性添加到自定义类并初始化类

时间:2016-02-13 20:07:56

标签: swift class

我正在尝试初始化一个继承自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分配给Object,分别分配给该类的实例。理想情况下,这两个值在每次实例化时都可能不同。

当我实例化类对象时,我会想到像

这样的东西
let newObject = PassengerNode(start: 1, destination: 0, texture: "passenger1")

但是我没有让它工作......我如何更改我的初始化? 有人有帮助吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

你必须为你的子类编写一个init方法来获取它们 三个参数:

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

init方法必须初始化子类的属性 然后拨打super.init