Xcode 在SpriteKit中不使用方便的初始值设定项初始化圆形Sprite节点
我正在创建一个Circle SKShapeNode类,并试图初始化一个圆,但它在Xcode 在SpriteKit中不使用方便的初始值设定项初始化圆形Sprite节点,xcode,swift,sprite-kit,Xcode,Swift,Sprite Kit,我正在创建一个Circle SKShapeNode类,并试图初始化一个圆,但它在super.init行上给了我一个错误。是否有其他方法可以初始化圆?谢谢 class Circle : SKShapeNode { var radius : CGFloat! init (pos:CGPoint,rad:CGFloat,color:UIColor) { super.init(circleOfRadius: 30) } required ini
super.init
行上给了我一个错误。是否有其他方法可以初始化圆?谢谢
class Circle : SKShapeNode {
var radius : CGFloat!
init (pos:CGPoint,rad:CGFloat,color:UIColor) {
super.init(circleOfRadius: 30)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我知道这有点陈旧,但我只是在SKScene上遇到了同样的问题,我想我可能会翻译 您在这里看到一个错误,因为您试图从超类调用便利函数。规则规定您只能从子类调用超级指定的初始值设定项。为方便功能,必须使用“self”。例如:
self.init( circleOfRadius: 30 )
但是,如果您还部分实现了init?(coder:)函数的重写。如果您实现了所有或没有指定的初始值设定项,那么您的子类只继承超类便利初始值设定项。因此,删除所需的init?(coder:)函数
这将给您留下一个(非常奇怪的)错误:
在self.init调用之前使用的“self”
令人恼火的是,该错误发生在调用便利函数self.init(circleOfRadius:)时
答案可以在Darvydas的链接中找到,在第二个答案中:显然,SKxxxxx对象的构造有些断裂。在调用便利初始化器之前,需要直接调用指定的初始化器init()。这应该适合您:
class Circle : SKShapeNode {
var radius : CGFloat!
convenience init (pos:CGPoint,rad:CGFloat,color:UIColor) {
self.init()
self.init(circleOfRadius: 30)
}
}
希望这能帮助你(或某人…)。这应该是有帮助的。你们应该看看老问题,有很多类似的问题。所以我应该创建一个CGPath吗?