0

我让那个有生命的人。所以我有headAnimation, eyeAnimation, earAnimation,的方法bodyAnimation

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

在那种方法中,我需要延迟调用动画。我怎样才能在不使用NSTimerand的情况下做到这一点performSelector

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

编辑

我用过[self performSelector:@selector(eyeAnimation) withObject:nil afterDelay: 2.0]。并为每个方法动画performSelector

在所有动画中,例如eye

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

所以现在在我的-(void)myAnimation10performSelector中,有不同的延迟。

所以问题是我如何才能做到这一点。

编辑#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。它们不是平行的。

4

1 回答 1

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:];

在需要动画的块和完成块中,我有下一步需要做什么的逻辑,这就是我将动画链接起来并将它们以持续时间和延迟的正确顺序排列的地方。

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

编辑

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

你期待什么?

于 2013-09-20T11:03:59.713 回答