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

E. *_*ers 7 drawing objective-c line ios sprite-kit

我想用Apples SpriteKit Framework从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];
Run Code Online (Sandbox Code Playgroud)

谁能指出我正确的方向?

pro*_*cal 5

您有一些使用 SKAction 的方法可能会实现您想要的:

SKAction performSelector: onTarget:

SKAction waitForDuration:

如果您对 SKShapeNode 进行子类化,则可以利用 a 中的这两个方法SKAction sequence来随着时间的推移绘制线条。

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

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

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

更新 :

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

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

这看起来相对容易,但是如果您想使其更加灵活,您仍然可以进行子类化,例如添加颜色参数等。