0

私はそのアニメーションの人間を作ります。だから私は、、、のための方法を持っていheadAnimationます。eyeAnimationearAnimationbodyAnimation

myAnimationすべてのアニメーションを呼び出すときにメソッドがあります。

その方法では、少し遅れてアニメーションを呼び出す必要があります。NSTimerとを使用せずにこれを作成するにはどうすればよいですか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

を使用しているため、上記の 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個のアニメーションがある場合. その数を増やす予定がある場合は、より複雑なアニメーション用にいくつかのゲーム エンジンをオンにすることをお勧めします。

編集

2 番目の編集で記述したコードのように、すべてのアニメーションの持続時間は 0 になります。最初のアニメーションは 2 秒後に発生し、その後 2 番目と 3 番目のアニメーションが並行して呼び出されますが、遅延があります。つまり、2 番目のアニメーションは 10 秒後に発生し、3 番目のアニメーションは 19 秒後に発生します。

何を期待していましたか?

于 2013-09-20T11:03:59.713 に答える