actionscript-3 - AS3 - 距离下一帧/屏幕绘制还有多长时间

标签 actionscript-3 frame-rate generative-art

我有一个生成艺术应用程序,我希望它在每帧中绘制尽可能多的周期而不降低帧速率。有没有办法知道屏幕更新/刷新还剩多少时间?

我想如果我可以估计每个周期需要多少毫秒,那么我可以运行周期,直到剩余时间少于平均或峰值周期时间,然后让屏幕刷新,然后运行另一组周期.

最佳答案

如果您希望应用程序以每秒 N 帧的速度运行,则可以循环绘制 1/N 秒*,其中 N 通常是阶段帧速率(您可以获取和设置):

import flash.utils.getTimer;
import flash.events.Event;

private var _time_per_frame:uint;

...主构造函数中的某个位置:

stage.frameRate = 30;
_time_per_frame = 1000 / stage.frameRate;
addEventListener(Event.ENTER_FRAME, handle_enter_frame);

...

private function handle_enter_frame(e:Event):void
{
  var t0:uint = getTimer();

  while (getTimer()-t0 < _time_per_frame) {
    // ... draw some stuff
  }
}
  • 请注意,这在某种程度上是一种简化,可能会导致最终帧速率比 stage.frameRate 指定的速率慢,因为 Flash 需要一些时间在帧之间执行渲染。但是,如果您使用的是位图传输(在屏幕上绘制位图)而不是在矢量中绘制或将形状添加到屏幕上,那么我认为上述内容实际上应该非常准确。

如果代码导致帧速率慢于所需的帧速率,您可以尝试一些简单的方法,例如仅使用为帧分配的一半时间,而将另一半时间留给 Flash 进行渲染:

_time_per_frame = 500 / stage.frameRate;

周围还有 FPS 监视器,您可以在绘图时使用它们来监视帧速率。谷歌 as3 framerate monitor .

关于actionscript-3 - AS3 - 距离下一帧/屏幕绘制还有多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264681/

相关文章:

actionscript-3 - 在 Movieclip 或 Sprite 中存储变量

c# XNA 低帧率

c++ - 问题控制游戏帧率 C++

javascript - P5js 用 WEBGL 绘制慢速草图

actionscript-3 - 如何增加 Flex 3 中的水平网格线厚度

apache-flex - <s :DropDownList selectedItem

actionscript-3 - Flash CS5中的事件发生后,交叉淡入淡出的声音

javascript - fps 保存在 html5 视频的元数据中的什么位置?

Flutter:如何使用 CustomPainter 创建生成动画

apache-flex - 基于音频的生成艺术的开源库(Flash/ActionScript)