Ваш подкласс (AimNode
) необходимо позвонить в назначенный инициализатору вашего суперкласса (SKSpriteNode
). Правила, как объяснены в Initializer Chaining разделе быстрого руководства по программированию являются:
Для упрощения отношений между назначенными и удобством инициализаторами, Swift применяет следующие три правил для делегирования вызовов между инициализаторами:
Правило 1 Назначенный инициализатор должен вызывать назначенный инициализатор из своего непосредственного суперкласса.
Правило 2 Инициализатор удобства должен вызвать другой инициализатор от того же класса.
Правило 3 Инициализатор удобства должен в конечном счете вызвать назначенный инициализатор .
Соответствующий назначенный инициализатор SKSpriteNode
является:
init(texture: SKTexture!, color: UIColor!, size: CGSize)
Итак, вам нужно создать SKTexture
, выбрать цвет и установить размер. К счастью, это довольно просто:
class AimNode: SKSpriteNode {
// NOTE: I arbitrarily picked white for the color. I believe that's the default, but I don't know for sure.
override init() {
let texture = SKTexture(imageNamed: "aim")
super.init(texture: texture, color: UIColor.whiteColor(), size: texture.size())
}
// NOTE: You'll have to implement this too, if you don't have anything custom, you can just call the super implementation
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
Какая ошибка компилятора вы получаете? – Undo