2013-03-11 33 views
1

我目前的目标是在我的iOS应用程序中为图片绘制动画,以便用户可以在他们的屏幕上看到类似http://www.youtube.com/watch?v=xlDmk5WdaHk的东西。使用CAKeyFrameAnimation进行时间绘画的高效动画

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

我的问题:完成立即绘制出现在屏幕上,和我的笔光标然后根据我的keyTimes值沿所述画面移动,而不必在串联笔划颜色填充与我的笔光标移动在屏幕上,以产生与视频相同的效果。

我注意到了这个问题SO,其中所述建议的解决方案是产生用于动画的每个点单独的路径: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并用我的动画?或者,这真的是最好的方式去做这件事?

在此先感谢

回答

1

肯定有一种更有效的方式,如果你的观点是贝塞尔路径上。 CAShapeLayer有两个名为strokeStart和strokeEnd的小属性。如果您最初将strokeEnd设置为零,那么您的路径将不会显示。在1.0时它会完全显示。将值从零增加到1将相应地跟踪曲线。这是一个动画属性,可以将其值与其他动画的关键时间同步,并且随着“笔”移动,图形将显示。

相关问题