2011-05-20 11 views
2

CAKeyframeAnimationのキーフレームが、アニメーションの実行時に常に正確な値でヒットすることが保証されているかどうかは誰にでも分かりますか?または...補間ガイドとしてのみ機能しますか?例えば例えば、私が指定した任意のプロパティのパス上に3ポイントを指定すると、それを「位置」と呼ぶことにします。実行時間を0.3f秒に指定しますが、(明らかに)ポイント1と3はヒットする必要がありますポイント2がキーフレーム配列で指定されたとおりに正確に評価されることを保証できますか?驚いたことに、私は適切な答えを与える単一の文書を発見していない。キーフレームのアニメーションのパスを使用して長さに沿ってさまざまな短いサウンドをトリガーするOpenALサウンドエフェクトシンクロナイザを作成しています。そのほとんどが実行されていますが、現在はいくつかありませんし、わかりませんそれが間違っている、または私のコードであるなら。 ありがとうございます。CAKeyframeAnimationのキーフレームは常に正確にヒットしますか?

+0

非常に興味深い!私たちも同様の問題があります。あなたはこれで運がありますか?共有したいキーフレームにオーディオを同期させる方法に関するヒント –

答えて

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という内部構造を知らなくても、正確な値を期待するコードは本質的に「壊れやすい」と言えるでしょう。これは、正確な値を得られないと言うわけではありませんが、入力データに大きく依存します。

こちらがお役に立てば幸いです。

+0

ありがとう、あなた!私は実際には許容差を使用していましたが、おそらく許容範囲のレベルは依然として厳格すぎます。しかし、同じキットの中に何か他のものがあるかどうか考えて食べ物をくれました。私の「Audimator」についての奇妙なことは、同じアニメーションを他のコードなしで連続して実行すると、すべてのサウンドが再生され、他のサウンドで再生されることがあるという結果が得られます。ターミナルサウンド。私はすぐに新しいiPhone 4を手に入れているので、その現象がデバイス上に現れているかどうかを確認します。ご協力いただき誠にありがとうございます。 – VectorVictor

+0

私はまだこのフォーラムの仕組みを学んでおり、アドバイスをいただきありがとうございます。私は戻って前の答えを認めます。ヘッドアップのためにもう一度おねがいします!ドロップキーポイントアクティビティは、CPU負荷の関数であると考えられます。私のテストと並行して走っているアプリが混乱してテストを実行すると、キーポイントは左、右、中央に逸失します。インテリジェントなフレームドロップが原因かもしれません。 – VectorVictor

+0

@VectorVictor、心配する必要はありません、私は自分でかなり新しくなっています。私はあなたがフレーム落ちについて正しいかもしれないと思う。 – idz

関連する問題