swift - no designado init para SKShapeNode(circleOfRadius: radio)
sprite-kit subclass (2)
Esto funcionó para nosotros.
Le permite usar otros iniciadores de conveniencia de SKShapeNode
, pero tiene una sintaxis extraña explicada aquí: https://stackoverflow.com/a/24536826/144088
class CircleNode : SKShapeNode {
override init() {
super.init()
}
convenience init(width: CGFloat, point: CGPoint) {
self.init()
self.init(circleOfRadius: width/2)
// Do stuff
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Intento crear una subclase de SKShapeNode en veloz como SKShapeNode (circleOfRadius: radius) pero no hay un design designado para ella.
¿Alguien tiene alguna solución o información sobre por qué? No estoy seguro si esto es un error o intencional. Encontré este video demostrando una solución para SKSpriteNode pero no funciona para mí. https://skillsmatter.com/skillscasts/5695-how-to-subclass-a-skspritenode
En general, estoy tratando de crear una subclase para un SKShapeNode del que pueda hacer una subclase de nuevo para tener diferentes versiones de para administrar mejor mi código. TIA
Gracias Martin, encontré ese ejemplo antes. Funciona, pero ¿cómo lo haría en un círculo en lugar de un rectángulo?
import Foundation
import SpriteKit
class Player : SKShapeNode {
override init() {
super.init()
self.name = "Player"
self.fillColor = UIColor.blackColor()
}
init(rectOfSize: CGSize) {
super.init()
var rect = CGRect(origin: CGPointZero, size: rectOfSize)
self.path = CGPathCreateWithRect(rect, nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
En el código principal
let playerOne = Player(rectOfSize: CGSize(width: 100, height: 100))
¿cómo es esto?
class Player: SKShapeNode {
init(circleOfRadius: CGFloat){
super.init()
let diameter = circleOfRadius * 2
self.path = CGPathCreateWithEllipseInRect(CGRect(origin: CGPointZero, size: CGSize(width: diameter, height: diameter)), nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}