1

CGPathAddCurveToPoint を使用してビューの動きをアニメーション化し、ベジエ パスを生成しようとしていますが、起点と終点の間の制御点を見つけるのに苦労しています。UIView の原点と宛先を指定して、制御点を動的に計算する方法を知っている人はいますか?

たとえば (iPad)、ポイント (455,482) から (31,100) に飛ぶ鳥 (UIView) をアニメーション化しようとしています。直線的な動きではなく、鳥が飛ぶような曲線的な動きにしたいです。よろしくお願いします。

回答ありがとうございますが、どうすればコントロールポイントを計算できるのでしょうか。

4

2 に答える 2

2

探している効果について少し説明していただけますか?コントロール ポイントの選択は、開始座標と終了座標の関数であるだけでなく、達成しようとしている効果の関数でもあります。過去に、ビューを「ピックアップ アンド ドロップ」したような錯覚が必要なイメージ ビューのモーションをアニメーション化するために、コントロール ポイントを両方とも同じ方向にわずかに垂直にオフセットしました。純粋に直線的な動きですが、何をしようとしているかに完全に依存します。また、拡大をアニメーション化してから、同時に変換スケールの通常に戻すことで、アニメーション化されたビューを拾い上げてドロップするという錯覚をさらに豊かにするために、これを行いました.

修正された回答では、鳥の飛行を表示したいと言っています。さて、それは魅力的な問題です。鳥を横から見た図です。たとえば、ある枝から別の枝へと離陸します。この場合、鳥の離陸と着陸を示すために、コントロール ポイントはおそらく両方とも少し真上を指します。または、羽ばたきの動きをシミュレートしようとしている場合は、羽ばたきごとに 1 つずつ、暫定的な上向きの制御点を設定することもできます。または、鳥を下または上から見ている場合、わずかに「S」字型の飛行パターンで十分かもしれないので、飛行経路に沿って離陸位置から 45 度を指すコントロールが 1 つあれば十分です。終点にあるもう 1 つのコントロール ポイントは、開始点に向かって 45 度後方を指していますが、反対方向を指しています。すべてはあなたの効果次第です」

シーンの画面スナップショットと鳥の画像 (横からか、上か下か) を表示する必要がある場合があります。また、想定している飛行パターンの例を描きたいと思うかもしれません。おそらく、他のより具体的な提案を行うことができます.

その他のリソース:

ところで、参考になるかもしれない興味深いアニメーションのデモンストレーションがいくつかあります。たとえば、Mike Nachbaurによるこのレーシング カーのアニメーションは、最初のアニメーションを作成したときに役に立ちました。ベジェ パスを描く方法や、パスに沿って画像を回転させる方法などを教えてくれました。鳥の飛行で​​はないことはわかっていますが、それはまだ説明的です。他にも素晴らしい例がオンラインにあると思います。とにかく、これらの種類のチュートリアルは、アプリのビジョンとベジエ パスの外観との間のギャップを埋めるのに役立つ場合があります。

于 2012-09-01T04:06:04.697 に答える