2013-09-30 129 views

回答

70

使用SKShapeNode您可以绘制线条或任何形状。

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]; 
+0

@Smick你想在这做什么修正?其工作代码.. – Rajneesh071

+4

没有任何更正,华纳应该给它一个勾号,因为它是正确的。 – DogCoffee

+0

@Smick - 瓦努纳将接受答案伙伴,只要他想...不要担心..它的正确答案.. :) – Rajneesh071

11

使用SKShapeNode我能够做到这一点。

// 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]; 
+1

线,LINE1 ???? – Rajneesh071

6

如果你只想要一个行,人有点如何使用UIViews的行头(只),那么你可以只使用一个SKSpriteNode

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

这里是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) 

从@ Rajneesh071的客观c代码示例转换而来。

4

我在尝试在每个mouseDown上绘制一条线,例如xCode/OS X/Game(aka SpriteKit)/ Application时发现此帖。

您可以将此代码复制/粘贴到GameScene.swift中。它应该由用户在每个鼠标按下事件中画一条线。看起来'蚀刻草图'式。

enter image description here

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

对于新手,这是我的Xcode项目的样子: enter image description here

对于极少数人的的iOS。与上面相同的代码移植到touchBegan的示例iOS /游戏(aka SpriteKit)/应用程序默认项目。 enter image description here

将这个代码在你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) 
    }}} 

sunflower drawing

享受。

5

夫特3用于经由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