创建动画队列

时间:2013-09-20 10:21:45

标签: ios objective-c ipad animation queue

我让人类生气勃勃。所以我有headAnimationeyeAnimationearAnimationbodyAnimation的方法。

当我调用所有动画时,我有方法myAnimation

在那种方法中,我需要稍微调用动画。如何在不使用NSTimerperformSelector的情况下完成此操作。

动画可以是并行或串行的。那么如何制作动画或块的队列,我可以在哪里发送延迟以及调用哪种方法?

修改

我使用了[self performSelector:@selector(eyeAnimation) withObject:nil afterDelay: 2.0]。对于每个方法动画performSelector

在所有动画中,例如eye

我使用[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionCurveEaseInOut animations: completion:];

所以现在我的-(void)myAnimation 10 performSelector有不同的延迟。

所以我可以如何表现这一点。

编辑#2

[UIView animateWithDuration:0.0 delay:2 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    [self eyeAnimation];
} completion:^(BOOL finished) {
    if (finished) {

    [UIView animateWithDuration:0.0 delay:8 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        [self earAnimation];
    } completion:^(BOOL finished) {


    }];
    [UIView animateWithDuration:0.0 delay:17 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        [self bodyAnimation];
    } completion:^(BOOL finished) {


    }];
    }
}];

但是,当我打电话给performSelector时,它会产生差异。它们并不平行。

1 个答案:

答案 0 :(得分:2)

我不明白你如何结合上述两种方法,因为你使用[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionCurveEaseInOut animations: completion:];我不知道为什么使用[self performSelector:@selector(eyeAnimation) withObject:nil afterDelay: 2.0]

无论如何,对于我在类似环境中使用的应用程序,我使用

的方法完成了所有操作
[UIView animateWithDuration:delay:options:animations:completion:];

带有需要动画的块&在completition块中,我有了接下来需要做的事情的逻辑,那就是我将动画链接起来的地方。把它们放在正确的顺序中,持续时间和时间延迟。

这很有用,但是如果你说的那样你有大约10个动画。如果计划增加这个数字,最好为更复杂的动画打开一些游戏引擎,因为你会因为同步所有动画而迷失方向。

修改

作为您在第二次编辑中编写的代码,所有动画的持续时间均为0。第一个动画将在2秒后发生。之后的第二个&第3个动画将被并行调用,但会有延迟,即第2个动画将在10秒后发生。第三个动画将在19秒后发生。

你有什么期望?