3

洗練されたアニメーションを作りたいです。しかし、私は変更のブロックをアニメーション化する方法しか知りません。アニメーションをチェーンする方法はありますか?たとえば、A-> B-> C-> D-> E-> F(など)を変更し、コアアニメーションは各アニメーションが終了するまで待機します。その後、次のものに進みますか?

特に、これを実行したいと思います。立方体を表示するUIImageViewがあります。

フェーズ1)キューブは床に平らです

フェーズ2)回転の原点が左下にある間、立方体はわずかに左に回転します。

フェーズ3)回転の原点が右下にある間、立方体はわずかに右に回転します。

これらのフェーズは10回繰り返され、フェーズ1)で停止します。また、揺れは時間とともに少なくなります。

ブロック内の1つの変更をアニメーション化する方法は知っていますが、洗練されたコードを間に挟んでこのような繰り返しを行うにはどうすればよいでしょうか。それは時間の経過とともに同じことではありません。揺れが止まるまでどんどん小さくなっていくので、変化します。

4

3 に答える 3

4

UIViewアニメーションを使用していると仮定します...

アニメーションが実際に終了したときに呼び出されるアニメーションの「停止」メソッドを提供できます (チェックアウトsetAnimationDelegate)。そのため、一連のアニメーションをキューに入れて準備を整えることができます。デリゲートを設定してから、最初のアニメーションを開始します。setAnimationDidStopSelector終了すると、メソッドが呼び出されます(finished一時停止されただけでなく、実際に終了したことを確認するためにフラグを確認してください)。アニメーションのキューのインデックスとなるアニメーション コンテキストを渡すこともできます。また、各サイクルでアニメーション値を調整できるように、カウンターを含むデータ構造にすることもできます。

そのため、1 つが完了するのを待ってから、キューから取り除かれた次の 1 つを開始するだけです。

他の種類のアニメーションを使用している場合も、同じ方法が適用されます。データ構造をセットアップするだけで、それぞれが終了した後に何をすべきかがわかります。

于 2009-05-12T19:22:44.720 に答える
1

アニメーション ブロック内にアニメーション デリゲートを設定する必要があります。すべての詳細については、UIView ドキ​​ュメントの setAnimationDelegate を参照してください。

基本的に、アニメーションが終了するたびにデリゲートに通知できます。コンテキスト パラメータを使用して、アニメーションのどのステップが現在終了しているかを判断します (フェーズ 1、フェーズ 2 など)。

この戦略により、必要な数のアニメーション ブロックを連鎖させることができます。

于 2009-05-12T19:20:10.293 に答える
0

あなたの質問への答えは、あなたがやりたいことについてより多くの仕様を得る必要があるということだと思います. あなたは明らかにアイデアを念頭に置いていますが、詳細をより詳細に指定すると、独自の質問に答えるのに役立ちます.

于 2009-05-12T18:33:52.990 に答える