requestAnimationFrame时间戳限制

时间:2020-03-18 14:08:36

标签: javascript requestanimationframe

我正在尝试基于requestAnimationFrame编写一个基本的游戏循环。对requestAnimationFrame的回调传递带有一个timestamp参数,据我所知,这是自页面加载以来的时间(以毫秒为单位)。建立游戏循环时,我假设每次调用requestAnimationFrame时,时间戳值始终会上升,基于此,我可以计算帧之间的时间增量。我唯一担心的是,如果应用程序长时间运行,则此时间戳值将在某个时候达到其极限。

有这样的限制吗?要实现此目标,必须花费多少现实时间?达到限制后,时间戳值会怎样?

2 个答案:

答案 0 :(得分:0)

我认为自页面加载以来它不会返回毫秒,而是返回DOMHighResTimeStamprequestAnimationFrame()开始执行回调函数时”。

From MDN

当需要更新动画时要调用的函数 下次重涂。回调函数传递一个参数,一个 DOMHighResTimeStamp类似于由返回的 performance.now(),指示何时 requestAnimationFrame()开始执行回调函数。

这虽然是一个问题,所以我也要说,我不会担心这种情况下的溢出,因为该单位是double,而且我很确定这意味着64位精度。达到year 2038 problem花费了60年,并且具有32位精度。我的数学可能已经关闭,但我只是不必担心溢出。当时间戳记开始崩溃时,我们可能会遇到更大的问题。

答案 1 :(得分:0)

别担心。

传递给requestAnimationFrame回调的是DOMHighResTimestamp,实际上其来源设置为窗口("the time when the browsing context is first created")中的页面加载,并且确实表示此后的毫秒数。

根据the specs,您有大约 285,616年才开始失去精度。