• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:43:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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



Best Answer-推荐答案


一般来说,依赖作为计算结果的浮点值的“精确性”是充满危险的。比如下面的代码:

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

我希望这会有所帮助。

关于ios - CAKeyframeAnimation 中的关键帧是否总是准确命中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076829/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap