1. 在web平台,如果用peformance.now(或者Date.now也一样,和是否用这个无关)去计算差值,得出来的delta值就是不平稳的,你的例子里的performance显示印证了这一点。
2. 如果用raf函数传入的timestamp去计算,那就是平稳的,你的例子的ccc2.4印证了这一点。所以重点应该是改为使用raf传入的timestamp。
3. 在60hz刷新率下,如果游戏是60fps,那每帧间隔可以稳定在16ms,但在高刷的情况下,比如90hz刷新,那情况会变得复杂,90不是60的整倍数,在raf以90hz频率调用时,要模拟60fps,那帧间隔就会出现0.111,0.222,0.111这样的规律,无法均匀。但因为刷新足够高,可以以2帧为整体去看,是不会影响动画平滑的。(PS:如果游戏不锁帧(Config.fixedFrames=false),那就能得到均匀的值。)
相关的修改看这个提交:
https://github.com/layabox/LayaAir/commit/6c10a6be899cc157e094cbae4264236af16fe734