移动尾巴动画



我想制作一个带有移动线条的动画,类似于狗摇尾巴。

我不知道如何开始。我以前使用过 Core Animation 的进度条CAShapeLayer,但不知道它是否适用于此。我过去也使用PaintCode来帮助自定义路径,例如为要在其上进行动画处理的对象创建自定义UIBezierPath。但也不确定PaintCode是否会对此有所帮助。

有什么想法吗?

这不会那么难。是的,使用CAShapeLayer动画将是要走的路。

我会将图像的不变部分制作成位图,然后在顶部绘制形状层动画。

形状图层动画的

诀窍在于,您使用的形状需要为动画的所有部分具有相同数量的控制点。

在尾部动画的情况下,您应该能够将其映射为一组二次贝塞尔曲线。您可能可以将尾巴绘制为带有圆形端盖的单个粗路径。(kCGLineCapRound)。您将起始曲线设置为二次贝塞尔曲线,起点在尾部直线部分的起点向下,下一个控制点略微向右和弯曲尖端下方,下一个控制点在第一个控制点的上方和左侧,但仍在尖端的下方和右侧, 以及尖端的最后一个控制点。

结束曲线的第一个控制点位于尾部底部的同一位置,第二个控制点位于曲线顶部和左侧,下一个控制点位于

曲线上方,基点和尖端之间大约 2/3 的道路,最后一个控制点位于尾部尖端。

您可能希望使用 Adobe Photoshop(或 GIMP)中的路径工具,并使用它来使用单个二次贝塞尔曲线创建起始和结束尾部曲线形状,然后记下您使用的控制点位置并将其输入到代码中。

您将创建一个CAShapeLayer CABasicAnimation,您将 fromValue 设置为起始 CGPath,将 toValue 设置为结束 CGPath。只需确保起始路径和结束路径具有相同数量的控制点即可。

我在Github上有一个名为RandomBlobs(链接)的项目,它展示了如何使用CGPath s和CABasicAnimation s对曲线进行动画处理,但它是用Objective-C编写的,而不是使用二次贝塞尔曲线,它创建了另一种曲线,称为Catmull-Rom样条曲线。 二次贝塞尔曲线实际上比 Catcall-Rom 样条曲线更容易设置, 如果你以前使用过CAShapelayer,那么使用 CABasicAnimationCAShapeLayer的更改进行动画处理背后的想法应该很容易从 Objective-C 转换为 Swift。您还可以使用一系列 Catmull-Rom 样条来获得您想要的尾部动画。Catmull-Rom 样条的优点是所有控制点都在曲线上。

相关内容

  • 没有找到相关文章