Сделать подкласс SKSpriteNode с помощью Swift

Я пытаюсь создать класс, который является подклассом SKSpriteNode, и я хочу добавить к нему другие свойства и функции. Но на первом этапе я столкнулся с ошибкой. Вот мой код:

import SpriteKit

class Ball: SKSpriteNode {
    init() {
        super.init(imageNamed: "ball")
    }
}

Это не ошибка компиляции, это ошибка времени выполнения. Как я могу это исправить?

1 ответов


вы должны вызвать назначенный инициализатор для 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")
    }
}

Примечание: я также добавил init на NSCoder который Xcode потребует.