无法调用' SKSpriteNode.init'使用类型'的参数列表(纹理:SKTexture,颜色:UIColor,大小:CGSize,() - >())'

时间:2018-01-11 13:27:56

标签: swift sprite-kit skspritenode

任何人都可以帮我解决这个问题吗?即使我使用指定的初始化程序,也会生成显示的错误。

class OtherOrb: SKSpriteNode {

override init() {

    let texture = SKTexture(imageNamed: "Orb")

    super.init(texture: texture, color: UIColor.clear, size: texture.size()){
        self.position = CGPoint(x: 0.0, y: 500.0)
        self.physicsBody = SKPhysicsBody(circleOfRadius: 20) 
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

1 个答案:

答案 0 :(得分:1)

由于关闭了初始化程序,因此您收到此错误。

在Swift中,编译器在方法调用之后直接解释闭包作为所述方法调用的最后一个参数,因此您得到的错误实际上表明没有包含该闭包参数的初始化存在。

此外,你的代码看起来非常不合适,我不相信它是有效的Swift。你想要完成什么?

基于我的怀疑,我相信您的代码应该类似于以下内容:

class OtherOrb: SKSpriteNode {

    init() {

        let texture = SKTexture(imageNamed: "Orb")
        super.init(texture: texture, color: UIColor.clear, size: texture.size())

        self.position = CGPoint(x: 0.0, y: 500.0)
        self.physicsBody = SKPhysicsBody(circleOfRadius: 20)
    }

    @available(*, unavailable)
    override init(texture: SKTexture?, color: UIColor, size: CGSize) {
        super.init(texture: texture, color: color, size: size)
    }

    @available(*, unavailable)
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

也就是说,您希望没有args的初始化程序成为您指定的初始化程序。