2

谁能告诉我 CAKeyframeAnimation 中的关键帧是否总是保证在动画运行时被准确的值击中?或者......它们仅充当插值指南吗?例如,如果我在路径上指定 3 个点让某个任意属性跟随 - 让我们称之为“位置” - 我指定执行时间为 0.3f 秒,而(显然)点 1 和 3 必须命中(如它们是终点)我可以保证点 2 将完全按照关键帧数组中的指定进行评估吗?令人惊讶的是,我还没有找到一个能够给出充分答案的文件。我问这个是因为我正在编写一个 OpenAL 音效同步器,它使用关键帧动画的路径来触发沿其长度的各种短声音,虽然它们中的大多数会被执行,但偶尔会有一些不会' t,我不知道是我的逻辑错了还是我的代码错了。提前致谢。

4

1 回答 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 回答