Я пытаюсь создать простой подкласс SKShapeNode
, который содержит метку внутри него. Я пробовал несколько способов сделать это, но я получаю ошибки для обоих из них.
Попытка 1
class MyNode: SKShapeNode {
private var label: SKLabelNode
init(_ frame: CGRect) {
super.init()
self.path = CGPath.init(rect: frame, transform: nil)
self.label = SKLabelNode(text: "Some text")
self.addChild(self.label)
}
}
Ошибка: Property 'self.label' not initialized at super.init call
Попытка 2
class MyNode: SKShapeNode {
private var label: SKLabelNode
init(_ frame: CGRect) {
self.label = SKLabelNode(text: "Some text")
self.addChild(self.label)
super.init()
self.path = CGPath.init(rect: frame, transform: nil)
}
}
Ошибка: 'self' used in method call 'addChild' before 'super.init' call
Как я могу создать этот подкласс без использования необязательных свойств и принудительно разворачивать их каждый раз, когда я их использую?
Вы не можете вызвать метод addChild
перед вызовом super.init
, так что вот исправление,
class MyNode: SKShapeNode {
private var label: SKLabelNode
init(_ frame: CGRect) {
self.label = SKLabelNode(text: "Some text")
super.init()
self.path = CGPath.init(rect: frame, transform: nil)
self.addChild(self.label)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}