使用Swift创建SKSpriteNode子类

Pot*_*ter 22 subclass ios sprite-kit skspritenode swift

我正在尝试创建类,它是SKSpriteNode的子类,我想为它添加其他属性和函数.但是在第一步中我遇到了一个错误.这是我的代码:

import SpriteKit

class Ball: SKSpriteNode {
    init() {
        super.init(imageNamed: "ball")
    }
}
Run Code Online (Sandbox Code Playgroud)

这不是编译错误,它是运行时错误.我该如何解决?

Mik*_*e S 44

您必须为指定的初始化程序调用SKSpriteNode.我真的很惊讶你没有得到关于没有完全实现的另一个错误SKSpriteNode,你是否使用旧的Xcode6测试版?

由于您必须使用指定的初始化程序,因此需要调用super.init(texture: '', color: '', size: '').

它会是这样的:

class Ball: SKSpriteNode {
    init() {
        let texture = SKTexture(imageNamed: "ball")
        super.init(texture: texture, color: nil, size: texture.size())
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
Run Code Online (Sandbox Code Playgroud)

注: 我还添加了initNSCoder这些Xcode的需要.

  • `SKSpriteNode`没有`init()`初始化程序,所以你不应该在decaration中有`override`. (3认同)
  • SKSpriteNode指定的初始化程序上的颜色不可为空,因此在调用super.init时需要使用`UIColor.clearColor()` (3认同)