任何人都可以告訴我,CAKeyframeAnimation中的關鍵幀是否始終保證在動畫運行時用它們的確切值命中?或者...他們只是作爲插值指南嗎?例如如果我指定某個任意屬性遵循的路徑上的3個點 - 我們稱之爲'位置' - 並指定0.3f秒的執行時間,同時(顯然)要點1和3必須命中(因爲它們是終點)我可以保證點2將按照關鍵幀數組中的規定進行精確評估嗎?令人驚訝的是,我還沒有找到一個能給出適當答案的文件。我問這是因爲我正在編寫一個OpenAL音效同步器,它使用關鍵幀動畫的路徑沿着它的長度觸發各種短小的聲音,而其中大部分都會被執行,現在又有一些不會,我也不知道如果這是我的邏輯錯誤或我的代碼。 在此先感謝。CAKeyframeAnimation中的關鍵幀是否總是完全命中?
回答
通常,依靠計算結果的浮點值的「正確性」充滿危險。例如下面的代碼:
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
的內部結構的情況下,我可以告訴你任何期望確切值的代碼本質上都是「脆弱的」。這並不是說你可能會得不到確切的值,但它將取決於輸入數據。
我希望這會有所幫助。
謝謝你idz!事實上,我使用寬容 - 但也許我的容忍度仍然過於嚴格。然而,你已經給我食物在同一件套件中考慮其他事情。關於我的'Audimator'的奇怪之處在於,按順序運行同樣的動畫,沒有其他代碼會產生結果,即有時會播放所有聲音,而在其他聲音中卻有一部分(甚至不是同一個)會被忽略 - 但它絕不是終端聲音。我很快就會得到一個新的iPhone 4,所以我會看看這個現象是否在設備上出現。非常感謝您的幫助。 – VectorVictor 2011-05-21 20:02:42
我仍然在學習這個論壇的工作原理,並感謝您的建議。我會回去承認我以前的答案。再次感謝您的提醒!丟棄關鍵點活動似乎是CPU負載的一個功能。如果我運行與我的測試一起運行的應用程序混亂的測試,關鍵點會錯過左側,右側和中心,並且沒有特定的順序。智能幀丟失可能是罪魁禍首。 – VectorVictor 2011-05-31 10:51:27
@VectorVictor,不用擔心,我在這裏相當新,所以仍然不確定所有的繩索。我懷疑你對丟幀可能是正確的。 – idz 2011-05-31 19:20:39
- 1. 如何檢查CAKeyframeAnimation是否已經清除了關鍵幀?
- 2. CAKeyframeAnimation上完全
- 3. 如何判斷一個幀是否是RTMP流中的一個關鍵幀
- 4. ConcurrentHashMap是否完全安全?
- 5. 外鍵是否總是引用主鍵?
- 6. `$ _SESSION`中的鍵的命名是否會影響安全性?
- 7. Propel中不完整的關鍵引用是否有用?
- 8. ConfigurationManager.AppSettings [關鍵]總是空
- 9. HTTP請求是否總是完成?
- 10. 我們是否總是需要使用async關鍵字?
- 11. 在HttpSession中存儲關鍵數據是否安全?
- 12. 主鍵是否總是聚集?
- 13. NSUserDefaults - 您的應用的關鍵名稱是否應完全限定?
- 14. 是否在PostgreSQL中命名爲特殊關鍵字?
- 15. 在此命令中是否使用關鍵字「STDOUT」ruby-或cygwin?
- 16. 檢查MS Excel中是否有兩行是完全相同的
- 17. JavaScript中是否有空關鍵字?
- 18. 在javascript中是否有關鍵字'capital'?
- 19. ES6/7中是否有`declare`關鍵字?
- 20. C++中是否有「屬性」關鍵字?
- 21. Ada中是否有「this」關鍵字?
- 22. PHP中是否需要「static」關鍵字?
- 23. CAKeyFrameAnimation中keyTime的值是什麼?
- 24. pthread_cond_wait是否完全信號安全?
- 25. 全局變量是否總是停留在內存中..?
- 26. 我們是否總是要關閉流?
- 27. 外鍵是否總是引用另一個表中的唯一鍵?
- 28. C# - Unity3D API中的C#命名約定是否與Java的完全不同?
- 29. C++ 11「auto」關鍵字是否完全檢索「cv-qualifier」?我有衝突樣品
- 30. 如何測試是否支持關鍵幀或不使用Modernizr?
非常有趣!我們有類似的問題。你有這個運氣嗎?關於如何將音頻與關鍵幀同步的任何提示,您想分享? – 2011-05-27 10:02:05