我正在尝试初始化一个继承自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")
但是我没有让它工作......我如何更改我的初始化? 有人有帮助吗?
提前致谢。
答案 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
。