可以用SpriteKit画一条动画线吗?

时间:2013-10-31 22:19:21

标签: ios objective-c drawing line sprite-kit

我想用Apples SpriteKit Framework从A(100,50)到B(250,450)画一条线。

到目前为止,我可以使用SKShapeNode绘制此行并设置其路径属性。

我想要实现的是绘制这条动画线。让我们说从A点到B点划线需要2秒钟。

我查看了SKAction类,但默认情况下似乎没有支持此功能的方法。

这是我用来创建该行的代码:

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 100, 50);
CGPathAddLineToPoint(path, NULL, 250.0, 450.0);

SKShapeNode *line = [SKShapeNode node];
line.path = path;
[line setStrokeColor:[UIColor whiteColor]];
[self addChild:line];

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

你有一些SKAction方法可能达到你想要的效果:

SKAction performSelector: onTarget:

SKAction waitForDuration:

如果您继承SKShapeNode,则可以在SKAction sequence中使用这两种方法来绘制线条。

您当然需要手动计算要绘制到每次迭代的新位置,并确定该线是否已完成并结束绘图的时间过程。

如果有人有另一种方法通过SpriteKit实现此功能,那肯定感兴趣,但如果没有,这应该可行。

抱歉,没有时间对此进行编码,但逻辑应该可以帮助您。

更新:

我想到了另一个我个人认为更容易的选择。

  1. 计算原点和终点之间的角度。
  2. 计算距原点和终点的距离。
  3. 创建圆形或像素的形状节点。把它想象成你将要画的铅笔点。
  4. 旋转形状节点,使其朝向终点倾斜 - 使用您计算的角度。
  5. 创建一个SKAction,根据您计算的距离缩放形状节点的宽度。
  6. 运行SKAction。
  7. 这似乎相对简单,但如果你想让它更灵活,你可以继承子类,比如添加颜色参数等。