swift sprite-kit subclass init skshapenode

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") } }