我正在开发一款使用操纵杆的SpriteKit游戏。我创建了一个操纵杆SKNode Class。
班级代码:
import Foundation
import SpriteKit
class Joystick: SKNode {
var joystickPad: SKShapeNode!
var joystickStick: SKShapeNode!
var colour: UIColor!
init(colour: UIColor) {
//constructor method
self.colour = colour;
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// lots of other code unrelated to the error
}
运行代码时出现以下错误:
在从初始化程序
返回之前,不会在所有路径上调用Super.init
任何人都可以解释错误并告诉我任何解决方案,我不知道为什么我会收到这个错误,因为我认为我的班级只是一个班级而不是超类。
非常感谢任何帮助。
其他信息:
我正在使用:
答案 0 :(得分:3)
这是因为您的班级继承自SKNode
。
如果子类声明了新的指定初始化程序,则应该调用超类init。您可以找到有关初始化here的更多信息。
您只需在super.init()
中添加init
来解决错误。
init(colour: UIColor) {
//constructor method
self.colour = colour;
super.init()
}
答案 1 :(得分:0)
因为我认为我的班级只是一个班级而不是超类
您的类是子类。因此,您必须在初始化程序中调用超类的指定初始值设定项:
init(colour: UIColor) {
self.colour = colour
super.init()
}