我无法在 AS3 中以 60fps 的速度实现与帧速率无关的运动。每一帧我都测量自上一帧以来的时间,将其添加到累加器中,如果累加器大于我的目标时间,即 16.666ms (60fps),则模拟一帧。
问题是 AS3 getTimer() 仅返回以毫秒为单位的时间。
我得到的增量时间通常是第一帧为 16 毫秒,第二帧为 16 毫秒,第三帧为 18 毫秒,并且这种模式重复。这平均为 16.666。但在第一帧中它低于目标时间(16 < 16.666),因此没有模拟任何帧。在第二帧中,累加器高于目标时间,但略低于目标时间的两倍,因此模拟了一帧。对于第三帧,18ms 将累加器推到目标时间的两倍以上,因此模拟了两帧。
所以我得到了这个非常不稳定的动作,其中没有渲染帧,然后是一帧,然后是两帧,然后是无帧,然后是一帧,然后是两帧,然后继续。
我将如何解决这个问题?