2011-12-04 24 views
2

我向Calayer添加了一个CAKeyframeAnimation和Key“SpeedBoat”。现在我正试图在动画期间更改动画的速度。改变正在进行的CAKeyframeAnimation动画的速度

[[self.shipLayer animationForKey:@"SpeedBoat"] setSpeed:([[self.shipLayer animationForKey:@"SpeedBoat"] speed] + deltaTime)]; 

这条线似乎有错误。但我没有得到任何调试信息。 这里有什么问题?是否有可能改变正在进行的动画的速度?

这将是非常好的,如果有人可以帮助我:)

问候 Xen的

回答

2

是的,你绝对可以改变动画的速度。这是因为CAKeyframeAnimation确认协议CAMediaTiming

苹果在他们的Animation Types and Timing Programming Guide中解释了这一点。

查看Timing, Timespaces, and CAAnimation上的部分。

具体来说:

“的动画或层的速度属性指定该缩放因子。例如,附加到与具有2的速度值的时分 - 空分的层10第二动画会。需要5秒钟显示(速度的两倍),如果该图层的子图层也定义了速度系数2,则其动画将在1/4时间内显示(超图层的速度*子图层的速度)。 “

我还可以向您指出一些优秀视频的方向吗?看一看:

WWDC 2010 Sessions 424 and 425 Core Animation in Practice Parts 1 and 2

WWDC 2011 Session 421 Core Animation Essentials

Developer Videos Session 716 Core Animation Techniques for iPhone and Mac

你甚至可以改变动画的速度,以有效地 “冻结” 了。这对于暂停和恢复非常有用。虽然有一点需要注意的是,如果应用程序背景不清或清除内存,它将无法正常运行。你必须手动处理。

Technical Q&A QA1673,我的回答这个问题,关于该过程的详细信息:

Is there an issue with updating a CALayer position while the layer is paused?