使用CAKeyFrameAnimation进行时变绘图的高效动画

时间:2013-03-11 15:57:25

标签: ios core-animation cakeyframeanimation cashapelayer

我目前的目标是在我的iOS应用中制作图片的动画,以便用户可以在屏幕上看到http://www.youtube.com/watch?v=xlDmk5WdaHk之类的内容。

我的绘画加速度随时间而变化,因此我使用CAKeyFrameAnimationkeyTimes构建了动画。目前,我只有一条Bezier路径指定了我绘图的所有点,我将路径添加到CAShapeLayer对象,然后在我开始动画时将路径传递给我的动画对象。

我的问题:完成的绘图会立即出现在屏幕上,然后我的笔光标会根据我的keyTimes值沿着图片移动,而不是让笔触颜色齐平用我的笔光标在屏幕上移动,产生与视频相同的效果。

我注意到了这个问题,建议的解决方案是为动画中的每个点生成一个单独的路径:How to Animate CoreGraphics Drawing of Shape Using CAKeyframeAnimation

鉴于我有100-300个单独的点,是否有更有效的方法来生成时变图,而不是创建一个包含几百个路径的数组(每个路径中有几百个值)这个表格:

path0 = point0...point0...point0...point0... 
path1 = point0...point1...point1...point1...
path2 = point0...point1...point2...point2...
path3 = point0...point1...point2...point3...

然后获取该数组路径,将其传递到myAnimation.values并使用values动画keyTimes?或者这真的是最好的解决方法吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果你的积分在更好的路径上,肯定有一种更有效的方法。 CAShapeLayer有两个叫做strokeStart和strokeEnd的小属性。如果您最初将strokeEnd设置为零,那么您的路径将不会显示。在1.0它将完全显示。将值从零增加到1将相应地跟踪曲线。这是一个可动画的属性,因此将其值与其他动画的关键时间同步,并且当“笔”移动时,您的绘图将显示。