【发布时间】:2011-05-15 19:58:03
【问题描述】:
我希望我的动画循环播放并逐渐减速。我不认为在这种情况下可以使用“重复”属性,因为动画必须在每次迭代结束时放慢速度。我的计划很简单:
1) 创建并初始化一个动画(在 for 循环体之外)。
2) 创建一个 for 循环。在这个循环的主体中为我的动画设置持续时间属性。并开始将动画添加到我的视图中(它是显式动画)。
3) 等待持续时间并继续执行循环。
我使用了 usleep() 函数来等待动画结束。在下一次循环迭代中,添加了相同的动画并更改了它的持续时间属性(增加以减慢动画速度)。这是代码(所有初始化动画的代码都在上面,无需以下修改即可正常工作):
for (int i=1; i<10; i++) {
// Find the duration (I simplified this part it depends on i value).
keyframeAnim.duration = ...;
// Add an animation.
[self addAnimation:keyframeAnim forKey:@"loopingLongAnimation"];
// Wait till it stops.
usleep(keyframeAnim.duration);
}
问题是这不能正常工作。它只播放一次示例动画并停止。看起来我错过了一些对核心动画非常重要的东西。为此目的是否有一些更合适或更合适的解决方案?我可以使用时序曲线来影响整个循环动画,而不仅仅是它的样本部分吗?
提前致谢。
【问题讨论】:
标签: iphone loops core-animation