菜鸟教程小白 发表于 2022-12-13 07:43:44

ios - CAKeyframeAnimation 中的关键帧是否总是准确命中?


                                            <p><p>谁能告诉我,CAKeyframeAnimation 中的关键帧是否始终保证在动画运行时被准确地击中?或者......它们仅充当插值指南吗?例如例如,如果我在路径上指定 3 个点让某个任意属性跟随——让我们称之为“位置”——我指定执行时间为 0.3f 秒,而(显然)点 1 和 3 必须被击中(因为它们是终点)我可以保证点 2 将完全按照关键帧数组中的指定进行评估吗?令人惊讶的是,我还没有找到一个能够给出充分答案的文件。我问这个是因为我正在编写一个 OpenAL 音效同步器,它使用关键帧动画的路径来触发沿其长度的各种短声音,虽然它们中的大多数都被执行,但时不时地有一些不这样做,我不知道如果这是我的逻辑错误或我的代码。
提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>一般来说,依赖作为计算结果的浮点值的“精确性”是充满危险的。比如下面的代码:</p>

<pre><code>CGFloat x1 = some_function();
CGFloat x2 = some_other_function();
if(x1 == x2)
{
    // do something
}
</code></pre>

<p>甚至不知道函数做了什么很可能是不正确的。即使函数执行非常相似的计算,优化器也可能重新排序操作,导致小的舍入误差足以导致相等测试失败。</p>

<p>应该是:</p>

<pre><code>CGFloat x1 = some_function();
CGFloat x2 = some_other_function();
CGFloat tolerance = 0.1; // or some tolerance suitable for the calculation.
if(fabsf(x1 - x2) &lt; tolerance)
{
    // do something
}
</code></pre>

<p>其中容差是适合正在执行的计算的某个值。</p>

<p>因此,在不了解 <code>CAKeyframeAnimation</code> 的内部结构的情况下,我可以告诉您,任何期望精确值的代码本质上都是“脆弱的”。这并不是说您可能无法获得准确的值,但这在很大程度上取决于输入数据。</p>

<p>我希望这会有所帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - CAKeyframeAnimation 中的关键帧是否总是准确命中?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6076829/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6076829/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - CAKeyframeAnimation 中的关键帧是否总是准确命中?