AS3 Event.ENTER_FRAME是否始终在每一帧上运行?即使在慢速电脑上?

zec*_*hdc 4 actionscript-3 flash-cs5

我有一个脚本,ENTER_FRAME每次都依赖于事件来运行.我注意到在一些较慢的电脑上播放flash电影时会有一些延迟.

是否ENTER_FRAME在每一帧上运行,即使它在慢速计算机上运行?如果flash电影滞后,ENTER_FRAME事件是否仍在运行,渲染只是试图赶上?

ENTER_FRAME每次进入帧时,是否以可靠的方式运行代码来执行代码?

Nox*_*tis 6

是的.每一帧,都没有例外.如果某些内容正在减慢电影速度(重型脚本或重型图形),则Event.ENTER_FRAME在渲染帧之前,处理程序仍在执行.

因此,使用Timer实例通常是一个好主意TimerEvent.TIMER,即使它的延迟设置为等于电影fps的 "理想"帧持续时间.因为timer处理程序不一定以完全统一的速率触发.

有关更深入的说明,请参阅以下链接:Elastic Racetrack

  • 使用具有理想帧率的Timer通常不是一个好主意,因为当真实帧率减慢时,你的Timer处理程序将进行迭代,其结果永远不会被绘制到屏幕上.在EnterFrame处理程序中执行逻辑,并在该处理程序中使用getTimer()检查自上次帧更新以来的时间,并采取相应措施. (4认同)
  • 我认为两者都不准确.真正重要的部分是跟踪更新之间的增量时间,并使用增量时间更新您的位置,而不是"每帧"固定值.如果它是一个计时器,每次函数运行时,delta时间都被"保证"大致相同,而在输入帧循环中,整个渲染过程需要很长的时间,这意味着你的delta时间可能会有所不同疯狂. (3认同)