我让人类生气勃勃。所以我有headAnimation
,eyeAnimation
,earAnimation
,bodyAnimation
的方法。
当我调用所有动画时,我有方法myAnimation
。
在那种方法中,我需要稍微调用动画。如何在不使用NSTimer
和performSelector
的情况下完成此操作。
动画可以是并行或串行的。那么如何制作动画或块的队列,我可以在哪里发送延迟以及调用哪种方法?
我使用了[self performSelector:@selector(eyeAnimation) withObject:nil afterDelay: 2.0]
。对于每个方法动画performSelector
。
在所有动画中,例如eye
:
我使用[UIView animateWithDuration:duration
delay:delay options:UIViewAnimationOptionCurveEaseInOut
animations: completion:];
。
所以现在我的-(void)myAnimation
10 performSelector
有不同的延迟。
所以我可以如何表现这一点。
[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
时,它会产生差异。它们并不平行。
答案 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秒后发生。
你有什么期望?