Actionscript 3 AS3中的平滑60fps帧速率独立运动
我很难在AS3中以60fps的速度实现与帧速率无关的运动。每一帧我测量上一帧之后的时间,将其添加到累加器中,如果累加器大于我的目标时间,即16.666ms(60fps),则模拟一帧 问题是AS3 getTimer()只返回以毫秒为单位的时间 我得到的增量时间通常是第一帧16ms,第二帧16ms,第三帧18ms,这种模式重复。平均为16.666。但在第一帧中,它低于目标时间(16<16.666),因此不模拟任何帧。在第二帧中,累加器高于目标时间,但略小于目标时间的两倍,因此模拟了一帧。对于第三帧,18ms将累加器推到目标时间的两倍,因此模拟了两帧 所以我得到了一个非常急促的运动,没有帧被渲染,然后是一帧,然后是两帧,然后是零帧,然后是一帧,然后是两帧,然后继续Actionscript 3 AS3中的平滑60fps帧速率独立运动,actionscript-3,flash,actionscript,frame-rate,Actionscript 3,Flash,Actionscript,Frame Rate,我很难在AS3中以60fps的速度实现与帧速率无关的运动。每一帧我测量上一帧之后的时间,将其添加到累加器中,如果累加器大于我的目标时间,即16.666ms(60fps),则模拟一帧 问题是AS3 getTimer()只返回以毫秒为单位的时间 我得到的增量时间通常是第一帧16ms,第二帧16ms,第三帧18ms,这种模式重复。平均为16.666。但在第一帧中,它低于目标时间(16
我该怎么解决这个问题呢?哇。。。我想我是唯一一个发现这一点的人 是的,AS3中的计时器类不准确。它只会每16毫秒触发一次,有时会导致重大问题 如果希望在1000毫秒内看到2048个动作: (要测试这一点,您需要一个执行时间为1ms的方法-仅用于偶数统计) 请注意区别: 正确:1000ms |计时器=0==1000个动作 AS3:1000ms |计时器=0==62.5动作 我能够编写一个这样的类: 正确:1000ms |计时器=0==1000个动作 重塑计时器:1000ms |计时器=0==1024个动作 注:
如果您采用我的方法在16ms内抛出自己的操作,那么您可以构建自己的计时器类。触发时,将事件用于16ms以下的时间。。。再发射15次-哈哈。基本上,你可以在16毫秒之间创建你自己的增量。我建议阅读这篇文章:为什么你使用定时器而不是事件。输入帧?