ios - Dibujando una línea con SKShapeNode
swift sprite-kit (1)
Bueno, está agregando la misma instancia hijo una y otra vez. Cree un nodo de línea cada vez y añádalo cada vez al nodo principal, y luego resolverá su problema.
var ref = CGPathCreateMutable()
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
if let touch = touches.anyObject() as? UITouch {
let location = touch.locationInNode(self)
CGPathMoveToPoint(ref, nil, location.x, location.y)
}
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let locationInScene = touch.locationInNode(self)
var line = SKShapeNode()
CGPathAddLineToPoint(ref, nil, locationInScene.x, locationInScene.y)
line.path = ref
line.lineWidth = 4
line.fillColor = UIColor.redColor()
line.strokeColor = UIColor.redColor()
self.addChild(line)
}
}
Quiero simplemente dibujar una línea usando SKShapeNode. Estoy usando SpriteKit y Swift.
Aquí está mi código hasta ahora:
var line = SKShapeNode()
var ref = CGPathCreateMutable()
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
}
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let locationInScene = touch.locationInNode(self)
CGPathMoveToPoint(ref, nil, locationInScene.x, locationInScene.y)
CGPathAddLineToPoint(ref, nil, locationInScene.x, locationInScene.y)
line.path = ref
line.lineWidth = 4
line.fillColor = UIColor.redColor()
line.strokeColor = UIColor.redColor()
self.addChild(line)
}
}
Cada vez que lo ejecuto y trato de dibujar una línea, la aplicación se bloquea con el error: reason: ''Se atiene a agregar un SKNode que ya tiene una matriz: SKShapeNode name:'' (null) ''accumulatedFrame: {{0, 0}, {0 , 0}} ''
¿Por qué está pasando esto?