CAKeyframeAnimationのキーフレームが、アニメーションの実行時に常に正確な値でヒットすることが保証されているかどうかを誰かに教えてもらえますか?または...補間ガイドとしてのみ機能しますか?たとえば、任意のプロパティがたどるパス上の3つのポイントを指定する場合(「position」と呼びましょう)、実行時間を0.3f秒と指定しますが、(明らかに)ポイント1と3をヒットする必要があります(それらは終点です)ポイント2がキーフレーム配列で指定されたとおりに正確に評価されることを保証できますか?驚いたことに、私は適切な答えを与える単一の文書を見つけられませんでした。キーフレームアニメーションのパスを使用して、その長さに沿ってさまざまな短いサウンドをトリガーするOpenALサウンドエフェクトシンクロナイザーを作成しているので、これを尋ねます。ほとんどのサウンドは実行されますが、いくつかは実行されません。tと私は、それが私の論理が間違っているのか、それとも私のコードなのかわかりません。前もって感謝します。
1 に答える
3
一般に、計算の結果である浮動小数点値の「正確さ」に依存することには危険が伴います。したがって、たとえば次のコード:
CGFloat x1 = some_function();
CGFloat x2 = some_other_function();
if(x1 == x2)
{
// do something
}
関数が何をするのかさえ知らなくても、おそらく正しくありません。関数が非常に類似した計算を行う場合でも、オプティマイザーが操作を並べ替えて、等価性テストを失敗させるのに十分な小さな丸め誤差を引き起こす可能性があります。
そのはず:
CGFloat x1 = some_function();
CGFloat x2 = some_other_function();
CGFloat tolerance = 0.1; // or some tolerance suitable for the calculation.
if(fabsf(x1 - x2) < tolerance)
{
// do something
}
ここで、許容値は、実行される計算に適した値です。
したがって、の内部を知らなくても、CAKeyframeAnimation
正確な値を期待するコードは本質的に「壊れやすい」と言えます。これは、正確な値が得られないということではありませんが、入力データに大きく依存します。
これがお役に立てば幸いです。
于 2011-05-20T20:59:44.887 に答える