Swift SKShapeNode不接受初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift SKShapeNode不接受初始化相关的知识,希望对你有一定的参考价值。

我无法让SKShapeNode的子类接受初始化器。为了解决这个问题,我试图通过这里发布的Adding Convenience Initializers in Swift Subclass示例。我正在使用的代码如下。

class Ground1 : SKShapeNode {

override init() {
    super.init()
    print("Hello1")
}

convenience init(width: CGFloat, point: CGPoint) {
    var points = [CGPoint(x: -900, y: -300),
                  CGPoint(x: -600, y: -100),
                  CGPoint(x: -100, y: -300),
                  CGPoint(x: 2, y: 150),
                  CGPoint(x: 100, y: -300),
                  CGPoint(x: 600, y: -100),
                  CGPoint(x: 900, y: -300)]
    self.init(splinePoints: &points, count: points.count)
    lineWidth = 5
    strokeColor = UIColor.orange
    physicsBody = SKPhysicsBody(edgeChainFrom: path!)
    physicsBody?.restitution = 0.75
    physicsBody?.isDynamic = false
    print("Hello2")
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

}

初始化时,方便init()被忽略并且不被使用。导致没有形状添加到场景中。我究竟做错了什么 ?

答案

感谢0x141E,他的回旋路向我指出了正确的方向。我发现这有效,但代码看起来很乱。 Adding Convenience Initializers in Swift Subclass详细解释了以这种方式进行初始化的原因。虽然我因为使用​​了splinePoints并分配给路径而被抛弃了寻找解决方案。

class Ground1 : SKShapeNode {

    override init() {
        super.init()
    }

    convenience init(name: String) {
        var points = [CGPoint(x: -900, y: -300),
                      CGPoint(x: -600, y: -100),
                      CGPoint(x: -100, y: -300),
                      CGPoint(x: 2, y: 150),
                      CGPoint(x: 100, y: -300),
                      CGPoint(x: 600, y: -100),
                      CGPoint(x: 900, y: -300)]
        self.init(splinePoints: &points, count: points.count)
        lineWidth = 5
        strokeColor = UIColor.orange
        physicsBody = SKPhysicsBody(edgeChainFrom: self.path!)
        physicsBody?.restitution = 0.75
        physicsBody?.isDynamic = false
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

以上是关于Swift SKShapeNode不接受初始化的主要内容,如果未能解决你的问题,请参考以下文章

将手势识别器添加到SKShapeNode Swift 4

使用 Swift 子类化 SKShapeNode

SKShapeNode 性能不佳

SKShapeNode在Swift中的浮点问题

Spritekit Swift SKShapeNode 未出现

同时初始化和绑定swift可选成员?