首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CADisplayLink射击不够频繁

CADisplayLink射击不够频繁
EN

Stack Overflow用户
提问于 2012-10-09 20:24:16
回答 1查看 743关注 0票数 0

我使用CADisplayLink来执行声音和动画之间的同步。同步需要非常精确,目前在1的CADisplayLink上运行的frameInterval并不经常调用选择器。

有没有办法增加它的粒度?(frameInterval是一个整数属性,所以我显然不能低于1)

EN

回答 1

Stack Overflow用户

发布于 2013-09-07 12:23:37

老问题,但它提出了有趣的观点,所以我将给我的2分钱。

正如文档所说,

代码语言:javascript
复制
A CADisplayLink object is a timer object that allows your application to synchronize its drawing to the refresh rate of the display.

因此,您将无法获得更频繁的更新超过60次每秒,液晶屏幕显示率。动画本身没有刷新率,它们表示每次屏幕更新时都能看到的连续运动。

我没有多少声音播放的经验,但我感到惊讶的是,CADisplayLink刷新率是不够的。1/60秒对用户的耳朵真的有影响吗?也许你用来播放声音的方法会引起某种滞后?

无论如何,如果您想更好地同步声音与您的动画,我建议设置一个NSTimer的重复间隔适合您,而不是一个CADisplayLink

你需要的其他东西是:

  • CACurrentMediaTime()函数,它返回核心动画在调用时使用的时间。
  • CAAnimationbeginTime属性(它从CAMediaTiming协议中获得)

beginTime设置为CACurrentMediaTime的偏移量将允许您创建在非常精确和控制的时间内开始的动画。如果在将动画添加到层时将其保留为0(默认值),则会在运行循环结束时自动将其设置为CACurrentMediaTime,从而减少对时间的控制。

您还可以从正在运行的beginTime中读取CAAnimation,以了解其启动的确切时间,这可能不是您将其添加到该层的确切时间(参见上文)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12807868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档