もし私が多分非線形であるが順序付けされた値の束を持っていたら:1、3、8、12と私は新しいものを追加しました。 3から8の間でそれを保存し、インデックスをつかむための最良のコレクションタイプ(他の何ものでもないスピード)で、その値の前と後ろにあるものを直接チェックできます。それはアニメーションシステムです、私はキーフレームを格納しているので、私は正しく前後に何を知る必要があるので、私は正しく値を補間することができますアニメーションツールのためのデータ保存を最も効率的に/最も速く処理する方法
現在、私はハッシュテーブル(dicitonary)thatsキーを使用しています値は私が望む位置です。
この方法では、変更時にキーフレームを更新するのに非常に便利ですが、アニメーション化するときに、私が5ですすデータを配置した場合は3と8を見つけることで、リスト全体を繰り返し現在のエントリを取得し、次に、前と次の繰り返しを格納します..(私は辞書に何かを追加するたびに、これが動作するためにはキーでソートする必要があることは言うまでもありません)。
このかなりオープンな問題に取り組むためのいくつかの提案を探しています。
は、このアニメーションツールのための私の現在の構造の中にいくつかの洞察を得るために:
私はにレコードをKeyframeProperties何であるタイムラインと呼ばれるコンポーネントを、持っています。したがって、キーフレームではrecord()を呼び出すと、現在のスロットに記録できる場合は接続されているタイムラインを問い合わせ、可能であれば、キーフレームが記録されたインデックスを返し、キーフレームプロパティは、現在アニメーターの現在のデータを持つ辞書に索引を格納します。アニメーションの再生を選択すると、timeline.play()関数が呼び出され、接続されているすべてのプロパティを繰り返し処理し、keyframeproperty.advanceframe(int frame#)を呼び出します。これは、前と次のフレームが必要な理由です。フレーム#が渡されたとき、アニメーションの次の補間された送り先がどこにあるかを知る方法はありません。
例: 4でプロパティの最も近い2つのキーフレームが3と7の場合、アニメーションは開始位置を3番目のフレームデータに設定し、次に0.25で補間します(1 /(7-3)= 0.25)
フレームあたり1つのエントリを持つ配列はどうでしょうか?配列インデックス==フレーム番号。配列位置は空でも、キーフレームプロパティを含んでもかまいません。 –
キーフレーム内の次の最も近いフレームに注意する必要があるという問題があります。これは、次のエントリと前のエントリを見つけるために、配列のすべてをループすることを意味します。 キーフレームプロパティのフレームを前進させて、存在しないフレームを渡す場合、アニメーションのどこにあるのかを見つけるために、前後にフレームを見つける必要があることを覚えておいてください。 – Sol
あなたはどのサイズですかについて話す?割り当てられた2つのスロット間の平均距離と最大距離はどれくらいですか? –