BezierPath动画

时间:2010-12-30 17:35:14

标签: iphone ipad core-animation bezier

我有一个Bezier曲线,我使用CAKeyFrameAnimation动画一个物体沿着它移动。但是,假设在检测到用户点击时,对象在曲线的某个点停止。然后在单击按钮以恢复移动时,对象应沿着剩余路径移动到最后。我该怎么做呢?

如果我将路径添加到CAKeyFrameAnimation对象,则在单击“恢复”按钮时,对象将从路径的起点向右移动。不是从它停止的角度来看。我希望它继续只从停止的点开始移动,而不是从头开始。有没有什么方法可以从路径停止的路径为它设置动画?

1 个答案:

答案 0 :(得分:3)

所有核心动画时序都在CAMediaTiming协议中实现。其属性之一是speed,它定义了图层相对于其父图层时间空间的动画计时。将speed属性设置为0.0将有效地暂停动画。

你必须做一点时间内务管理,以确保重新启动后动画正常完成。文档中的Technical Q&A QA1673具有以下示例代码,该代码适用于您:

-(void)pauseLayer:(CALayer*)layer
{
  CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
  layer.speed = 0.0;
  layer.timeOffset = pausedTime;
}

-(void)resumeLayer:(CAlayer*)layer
{
  CFTimeInterval pausedTime = [layer timeOffset];
  layer.speed = 1.0;
  layer.timeOffset = 0.0;
  layer.beginTime = 0.0;
  CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
  layer.beginTime = timeSincePause;
}