我试图在swift中创建一个类型为sknode的类,它也包含一个持有位置的参数。我一直在尝试创建一个错误,并且#34;初始化程序没有覆盖超级类的指定初始化程序"我不确定我做错了什么,或者应该如何创建这个类。
import Foundation
import SpriteKit
class hud:SKNode {
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(position:CGPoint){
}
}
答案 0 :(得分:2)
您收到"initializer does not override a designated initializer from its super class"
错误,因为您已将init(position:CGPoint)初始化程序标记为覆盖。
SKNode没有这样的初始化程序,所以没有什么可以覆盖。
简单地删除覆盖将消除错误,并且您的Hud类将有一个初始化器将CGPoint作为参数。
init(position: CGPoint) {...}
值得注意的是,SKNode已经有一个名为CGPoint类型的属性,因此SKNode可能已经拥有了你所追求的功能。否则,您可能希望将您的财产称为其他内容(例如myPosition)以避免与现有属性发生冲突。
答案 1 :(得分:1)
删除override关键字,不要忘记在init方法中调用原始初始值设定项:
class hud:SKNode {
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
init(position:CGPoint){
super.init()
}
}