Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 在SpriteKit中不使用方便的初始值设定项初始化圆形Sprite节点_Xcode_Swift_Sprite Kit - Fatal编程技术网

Xcode 在SpriteKit中不使用方便的初始值设定项初始化圆形Sprite节点

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

我正在创建一个Circle SKShapeNode类,并试图初始化一个圆,但它在
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吗?