3

我想做一些复杂的动画。但我只知道如何为变化块设置动画。有没有办法链接动画,这样我就可以进行更改 A -> B -> C -> D -> E -> F (等等),而核心动画等待每个动画完成并且然后进行下一个?

特别是,我想这样做:我有一个显示立方体的 UIImageView。

阶段 1) 立方体平放在地板上

阶段 2) 立方体稍微向左旋转,而旋转原点在左下角。

阶段 3) 立方体稍微向右旋转,而旋转原点在右下角。

这些阶段重复 10 次,并在阶段 1) 停止。此外,随着时间的推移,摆动变得更小。

我知道如何为一个块中的一个变化设置动画,但是我怎么能在中间使用一些复杂的代码来做这样一个重复的事情呢?随着时间的推移,这不是一回事。它改变了,因为摆动变得越来越小,直到它停止。

4

3 回答 3

4

假设您正在使用 UIView 动画...

您可以提供一个动画“停止”方法,在动画实际完成时调用该方法(签出setAnimationDelegate)。因此,您可以将一系列动画排成队列并准备就绪。设置委托,然后启动第一个动画。当它结束时,它调用该setAnimationDidStopSelector方法(确保检查finished标志以确保它真的完成而不是暂停)。您还可以传递一个动画上下文,它可能是您的动画队列中的索引。它也可以是包含计数器的数据结构,因此您可以在每个循环中调整动画值。

因此,只需等待一个完成,然后启动下一个从队列中取出的问题。

如果您使用其他类型的动画,同样的方法也适用。你只需要设置你的数据结构,让它知道每个结束后要做什么。

于 2009-05-12T19:22:44.720 回答
1

您需要在动画块内设置动画委托。有关所有详细信息,请参阅 UIView 文档中的 setAnimationDelegate。

本质上,您的代理可以在动画结束时收到通知。使用上下文参数来确定动画中当前正在结束的步骤(第 1 阶段、第 2 阶段等)

该策略应该允许您将任意数量的动画块链接在一起。

于 2009-05-12T19:20:10.293 回答
0

我认为你的问题的答案是你需要对你想做的事情有更多的规范。您显然有一个想法,但更多详细说明将帮助您回答自己的问题。

于 2009-05-12T18:33:52.990 回答