1

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

我的绘图速度会随时间而变化,因此我使用CAKeyFrameAnimation和构建了我的动画keyTimes。目前,我只有一个指定绘图的所有点的 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.valuesvalueskeyTimes? 或者这真的是解决这个问题的最好方法吗?

提前致谢

4

1 回答 1

1

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

于 2013-04-13T20:45:51.277 回答