1

私の現在の目標は、iOS アプリで画像の描画をアニメーション化して、ユーザーが画面でhttp://www.youtube.com/watch?v=xlDmk5WdaHkのようなことが起こっているのを見ることができるようにすることです。

描画の加速は時間とともに変化するため、 と を使用CAKeyFrameAnimationしてアニメーションを作成しkeyTimesました。現時点では、描画のすべてのポイントを指定するベジエ パスが 1 つしかありません。そのパスをCAShapeLayerオブジェクトに追加し、アニメーションを開始するときにそのパスをアニメーション オブジェクトに渡します。

私の問題:完成した図面がすぐに画面に表示され、ペン カーソルがkeyTimes値に従って画像に沿って移動します。ビデオ。

この SO の質問に気付きました。推奨される解決策は、アニメーションのすべてのポイントに対して個別のパスを生成することでした: How to Animate CoreGraphics Drawing of Shape Using CAKeyframeAnimation

100 ~ 300 個の個別のポイントがある場合、次の形式のパスを使用して数百のパス (各パスに数百の値を持つ) の配列を作成するよりも、時変図面を作成するより効率的な方法はありますか?

path0 = point0...point0...point0...point0... 
path1 = point0...point1...point1...point1...
path2 = point0...point1...point2...point2...
path3 = point0...point1...point2...point3...

次に、そのパスの配列を取り、それを my ?に渡してmyAnimation.valuesアニメーション化します。それとも、これが本当に最善の方法ですか?valueskeyTimes

前もって感謝します

4

1 に答える 1

1

ポイントがベジエ パス上にある場合は、より効率的な方法があります。CAShapeLayer には、strokeStart と strokeEnd という 2 つの小さなプロパティがあります。最初に strokeEnd をゼロに設定すると、パスは表示されません。1.0 で完全に表示されます。値を 0 から 1 に増やすと、それに応じて曲線がトレースされます。これはアニメーション可能なプロパティであるため、その値を他のアニメーションのキー時間と同期すると、「ペン」が動いているときに描画が表示されます。

于 2013-04-13T20:45:51.277 に答える