ios - spritekit - Cambiar el radio de SKShapeNode
spritekit que es (1)
Si crea SKShapeNode con una ruta, puede cambiar la ruta en cualquier momento posterior. Prueba esto:
class GameScene: SKScene {
override func mouseDown(theEvent: NSEvent) {
let location = theEvent.locationInNode(self)
let node = self.nodeAtPoint(location)
if let circle = node as? SizeableCircle { // clicking on an existing circle
circle.radius = Double(arc4random_uniform(100))
} else { // clicking on empty space
self.addChild(SizeableCircle(radius: 100.0, position: location))
}
}
}
class SizeableCircle: SKShapeNode {
var radius: Double {
didSet {
self.path = SizeableCircle.path(self.radius)
}
}
init(radius: Double, position: CGPoint) {
self.radius = radius
super.init()
self.path = SizeableCircle.path(self.radius)
self.position = position
}
class func path(radius: Double) -> CGMutablePathRef {
var path: CGMutablePathRef = CGPathCreateMutable()
CGPathAddArc(path, nil, 0.0, 0.0, radius, 0.0, 2.0 * M_PI, true)
return path
}
}
La diferencia entre esto y la escala es que cualquier otra cosa que establezca (por ejemplo, ancho de línea, nodos de texto para niños, etc.) no cambiará a menos que los haga.
¿Cómo podemos cambiar el radio del SKShapeNode sin volver a crearlo? En el archivo de encabezado, solo hay un inicializador con la sintaxis circleOfRadius.