Подтвердить что ты не робот

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

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

import SpriteKit

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

Это не ошибка компиляции, это ошибка времени выполнения. Он говорит: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) и fatal error: use of unimplemented initializer 'init(texture:)' for class Project.Ball.

Как я могу это исправить?

4b9b3361

Ответ 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.