ios7 sprite-kit

ios7 - Cómo dibujar una línea en Sprite-kit



(6)

Aquí está el código equivalente en SWIFT:

let pathToDraw:CGMutablePathRef = CGPathCreateMutable() let myLine:SKShapeNode = SKShapeNode(path:pathToDraw) CGPathMoveToPoint(pathToDraw, nil, 100.0, 100) CGPathAddLineToPoint(pathToDraw, nil, 50, 50) myLine.path = pathToDraw myLine.strokeColor = SKColor.redColor() self.addChild(myLine)

Convertido de a la muestra del código objetivo c @ Rajneesh071.

¿Cómo se puede trazar una línea en Sprite-kit? Por ejemplo, si quiero dibujar una línea en cocos2d, podría usar fácilmente ccDrawLine();

¿Hay un equivalente en el kit de sprites?


Encontré esta publicación al intentar trazar una línea en cada mouseDown, del ejemplo xCode / OS X / Game (también conocido como SpriteKit) / Aplicación.

Puede copiar / pegar este código en GameScene.swift. Debería dibujar una línea en cada evento del mouse por usuario. Se ve el estilo ''etch-a-sketch''.

import SpriteKit var lastPoint: CGPoint = CGPoint(x: 0.0, y: 0.0) var newPoint: CGPoint = CGPoint(x: 100.0, y: 100.0) class GameScene: SKScene { override func didMoveToView(view: SKView) { /* Setup your scene here */ self.backgroundColor = SKColor.blackColor() let myLabel = SKLabelNode(fontNamed:"default") myLabel.text = "SKSpriteNode Draw Lines"; myLabel.fontSize = 15; myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); self.addChild(myLabel) } override func mouseDown(theEvent: NSEvent) { /* Called when a mouse click occurs */ let location = theEvent.locationInNode(self) newPoint = location let pathToDraw:CGMutablePathRef = CGPathCreateMutable() let myLine:SKShapeNode = SKShapeNode(path:pathToDraw) CGPathMoveToPoint(pathToDraw, nil, lastPoint.x, lastPoint.y) CGPathAddLineToPoint(pathToDraw, nil, newPoint.x, newPoint.y) lastPoint = newPoint myLine.path = pathToDraw myLine.strokeColor = SKColor.whiteColor() self.addChild(myLine) } }

Para los novatos, así es como se ve mi proyecto xCode:

Para el pequeño puñado de iOS de personas. Mismo código que el anterior para touchBegan del ejemplo iOS / Game (también conocido como SpriteKit) / Proyecto predeterminado de la aplicación.

Pon este código en tu archivo GameScene.swift

import SpriteKit var lastPoint: CGPoint = CGPoint(x: 0.0, y: 0.0) var newPoint: CGPoint = CGPoint(x: 100.0, y: 100.0) class GameScene: SKScene { override func didMoveToView(view: SKView) { /* Setup your scene here */ self.backgroundColor = SKColor.blackColor() let myLabel = SKLabelNode(fontNamed:"default") myLabel.text = "SKSpriteNode Draw Lines"; myLabel.fontSize = 15; myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); self.addChild(myLabel) } override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { /* Called when a touch begins */ for touch in (touches as! Set<UITouch>) { let location = touch.locationInNode(self) newPoint = location let pathToDraw:CGMutablePathRef = CGPathCreateMutable() let myLine:SKShapeNode = SKShapeNode(path:pathToDraw) CGPathMoveToPoint(pathToDraw, nil, lastPoint.x, lastPoint.y) CGPathAddLineToPoint(pathToDraw, nil, newPoint.x, newPoint.y) lastPoint = newPoint myLine.path = pathToDraw myLine.strokeColor = SKColor.whiteColor() self.addChild(myLine) }}}

Disfrutar.


Si solo quiere una línea, más o menos cómo las personas usan UIViews para líneas (solo), entonces puede simplemente usar un SKSpriteNode

SKSpriteNode* line = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(160.0, 2.0)]; [line setPosition:CGPointMake(136.0, 50.0))]; [self addChild:line];


Swift 3 para dibujar la línea a través de SKShapeNode:

// Define start & end point for line let startPoint = CGPoint.zero let endPoint = CGPoint.zero // Create line with SKShapeNode let line = SKShapeNode() let path = UIBezierPath() path.move(to: startPoint) path.addLine(to: endPoint) line.path = path.cgPath line.strokeColor = UIColor.white line.lineWidth = 2


Usando SKShapeNode puedes dibujar líneas o cualquier forma.

SKShapeNode *yourline = [SKShapeNode node]; CGMutablePathRef pathToDraw = CGPathCreateMutable(); CGPathMoveToPoint(pathToDraw, NULL, 100.0, 100.0); CGPathAddLineToPoint(pathToDraw, NULL, 50.0, 50.0); yourline.path = pathToDraw; [yourline setStrokeColor:[SKColor redColor]]; [self addChild:yourline];


Utilizando SKShapeNode pude hacer esto.

// enter code here SKShapeNode *line = [SKShapeNode node]; CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 50.0, 40.0); CGPathAddLineToPoint(path, NULL, 120.0, 400.0); line.path = path; [line setStrokeColor:[UIColor whiteColor]]; [self addChild:line];