7

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

到目前为止,我可以使用 a 绘制这条线SKShapeNode并设置它的 path 属性。

我想要实现的是绘制这条线动画。假设从 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];

谁能指出我正确的方向?

4

1 回答 1

4

您有一些 SKAction 方法可以实现您想要的:

SKAction performSelector: onTarget:

SKAction waitForDuration:

如果您将 SKShapeNode 子类化,则可以在 a 中利用这两种方法SKAction sequence随着时间的推移绘制线。

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

如果有人有其他方法可以通过 SpriteKit 实现此功能,绝对有兴趣,但如果没有,这应该可行。

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

更新 :

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

  1. 计算起点和终点之间的角度。
  2. 计算从起点到终点的距离。
  3. 甚至创建一个圆形或像素的形状节点。把它想象成你将用来画画的铅笔尖。
  4. 旋转形状节点,使其朝向端点倾斜 - 使用您计算的角度。
  5. 创建一个 SKAction,它根据您计算的距离缩放形状节点的宽度。
  6. 运行 SKAction。

这看起来相对容易,但如果你想让它更灵活,你仍然可以子类化,比如添加颜色参数等。

于 2013-11-01T01:55:28.097 回答