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

Подкласс SKShapeNode с Swift

Я пытаюсь подкласса SKShapeNode с помощью Swift. До сих пор у меня есть что-то вроде этого:

import UIKit
import SpriteKit

class STGridNode: SKShapeNode {

    init() {
        super.init()
        self.name = "STGridNode"
        self.fillColor = UIColor(red: 0.11, green: 0.82, blue: 0.69, alpha: 1)
    }

}

В моем коде я хочу так сделать что-то вроде:

let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100))

Итак, мой вопрос: как реализовать rectOfSize в инициализаторе для STGridNode? Я пробовал:

init(rectOfSize: CGPoint) {
    super.init(rectOfSize: rectOfSize);
}

Но это дает ошибку: "Не удалось найти перегрузку для init, которая принимает предоставленные аргументы"

4b9b3361

Ответ 1

У вас есть две проблемы с кодом, который вы пробовали:

  • rectOfSize в SKShapeNode принимает CGSize не a CGPoint
  • rectOfSize in SKShapeNode - это инициализатор удобства, поэтому вы не сможете вызвать его из подкласса. Вам нужно будет вызвать super.init() и реализовать функцию rect самостоятельно

Вы можете сделать что-то вроде этого:

init(rectOfSize: CGSize) {
    super.init()

    var rect = CGRect(origin: CGPointZero, size: rectOfSize)
    self.path = CGPathCreateWithRect(rect, nil)
}