#cocoa-touch #sprite-kit #swift
#cocoa-touch #набор спрайтов #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)
}
}
В моем коде я хочу, чтобы so сделал что-то вроде:
let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100))
Итак, мой вопрос — как мне реализовать rectOfSize
в инициализаторе для STGridNode
? Я пробовал:
init(rectOfSize: CGPoint) {
super.init(rectOfSize: rectOfSize);
}
Но это выдает ошибку: «Не удалось найти перегрузку для инициализации, которая принимает предоставленные аргументы»
Комментарии:
1. Какую ошибку вы получаете при попытке инициализировать свой метод?
2. @drewag, я обновил свой вопрос с немного более подробной информацией. Спасибо 🙂
Ответ №1:
У вас две проблемы с кодом, который вы пробовали:
rectOfSize
вSKShapeNode
принимаетCGSize
неCGPoint
rectOfSize
inSKShapeNode
— это удобный инициализатор, поэтому вы не сможете вызвать его из подкласса. Вам придется самостоятельно вызыватьsuper.init()
и реализовывать функциональность rect
Вы можете сделать что-то вроде этого:
init(rectOfSize: CGSize) {
super.init()
var rect = CGRect(origin: CGPointZero, size: rectOfSize)
self.path = CGPathCreateWithRect(rect, nil)
}
Комментарии:
1. self.path = CGPath(rect: rect, преобразование: ноль)