ios - 是否可以用 SpriteKit 动画画一条线?

标签 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];

谁能指出我正确的方向?

最佳答案

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

SKAction performSelector: onTarget:

SKAction waitForDuration:

如果您将 SKShapeNode 子类化,您可以在 SKAction sequence 中使用这两个方法来随着时间绘制线。

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

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

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

更新:

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

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

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

关于ios - 是否可以用 SpriteKit 动画画一条线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717570/

相关文章:

c# - 在 C# 中创建 float 对象的最佳方法

ios - 用于启用推送通知的自定义对话框 (iOS)

ios - Frank(iOS验收测试框架)找不到Alamofire

ios - 为什么数据多次添加到数组中?

objective-c - willRotateToInterfaceOrientation 在 Universal MasterDetail 应用程序中不起作用

iphone - NSDictionary到包含键和值的NSArray

objective-c - 将填充更改为已绘制的 NSBezierPath

ios - 打开另一个带有选项卡栏和导航栏的 Storyboard

objective-c - 将 UI Picker 添加到 UITextView

c++ - glvertexpointer std::vector, struct memory opengl