2009-05-12 5 views
3

私は洗練されたアニメーションをしたいです。しかし、私は変更のブロックをアニメーション化する方法しか知りません。アニメーションを連鎖させる方法はありますか?たとえば、A→B→C→D→E→Fなどのように変更できますが、コアアニメーションは各アニメーションが終了するまで待機します。次のものに進む?iPhone-OSでアニメーションを連鎖させる方法は?

特に、私はこれをやりたい:キューブを表示するUIImageViewがある。

フェーズ1)キューブは、床に

フェーズ2平坦である)キューブ回転原点は左下にあるとき、左にわずかに回転させます。

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

これらのフェーズは10回繰り返され、フェーズ1で停止します。また、ウィグリングは時間とともに小さくなる。

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

答えて

4

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

だから、キューから外した次のものを蹴飛ばすのを待つだけの問題です。

他のタイプのアニメーションを使用している場合は、同じ方法が適用されます。それぞれが終わった後に何をすべきかを知るように、データ構造を設定するだけです。

0

あなたの質問に対する答えは、あなたが何をしたいのかについてより多くの仕様を取得する必要があると思います。あなたは明確に考えを持っていますが、細部の詳細があなた自身の質問に答えるのに役立ちます。

+0

ありがとうございました。私はいくつかの詳細を追加しました。 – Thanks

1

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

本質的に、アニメーションが終了するたびに代理人に通知することができます。コンテキストパラメータを使用して、アニメーションの現在のステップ(フェーズ1、フェーズ2など)を確認します。

この戦略では、必要な数だけアニメーションブロックを連鎖させることができます。あなたがアニメーションを提供することができます

+0

そのコンテキストヒントありがとう!たくさん助けて! – Thanks

関連する問題