在Apple关于CAKeyframeAnimation的文档中,他们说:
“对于大多数类型的动画,您可以使用指定关键帧值 values和keyTimes属性。在动画期间,Core 动画通过在插值之间插值来生成中间值 您提供的价值。动画化作为坐标点的值时, 例如图层的位置,您可以指定该点的路径 而不是单个值。动画的节奏是 由您提供的时间信息控制。“
我想要做的是在控制时间的同时沿着上面的路径制作图像动画。更具体地说,路径从(0,0)开始并在1秒内变为(100,0),然后在3秒内沿着半圆路径到达点(300,0),然后到达点(400, 0)在1秒内。
我已经将此路径定义为NSBezier路径,我可以制作动画,但我不知道如何控制路径不同部分的时序。从Apple的文档看来,这应该是可能的,但是如何?
答案 0 :(得分:0)
从这里获取参考Controlling Animation Timing
答案 1 :(得分:0)
有一个简单的解决方案。您唯一要选择的是路径上要用于时间控制的点。在我的情况下,我有4个点p0 =(0,0),p1 =(100,0),p2 =(200,0),p3 =(300,0)。然后我用
animation.values = @[[NSValue valueWithPoint:p0],
[NSValue valueWithPoint:p1],
[NSValue valueWithPoint:p2],
[NSValue valueWithPoint:p3]];
animation.keyTimes = @[@0.0, @0.2, @0.8, @1.0];
我们使用半圆(或任何其他复杂的)路径的事实不会产生任何影响(只要它不跨越自身)。您只需在路径上选择一些点,使用它们来定义animation.values,然后为这些点选择(相对)时间并使用它们来定义animation.keyTimes。这就是全部,真的。