应用程序帧速率

通常,使用尽可能低的帧速率可以提高性能。

应用程序的帧速率可确定每个“应用程序代码和呈现”循环的可用时间,如在 运行时代码执行基本原理 中所述。帧速率越高,创建的动画越流畅。但是,如果没有动画或其他可视更改,则通常没有必要使用高帧速率。相比较低的帧速率,较高的帧速率会耗用更多的 CPU 资源和电池能量。

以下是一些关于适合应用程序的默认帧速率的常规指导方针:

  • 如果使用的是 Flex 框架,将起始帧速率保持为默认值。

  • 如果应用程序包括动画,适当的帧速率至少是 20 帧/秒。通常不必超过 30 帧/秒。

  • 如果应用程序不包括动画,12 帧/秒的帧速率可能就足够了。

“尽可能低的帧速率”可能因应用程序的当前活动而异。有关详细信息,请参阅下一个技巧“动态更改应用程序的帧速率”。

如果视频是应用程序中唯一的动态内容,请使用低帧速率。

运行时以本机帧速率播放加载的视频内容,而与应用程序的帧速率无关。如果应用程序不包含任何动画或其他快速更改的可视内容,使用低帧速率不会降低用户界面的体验。

动态更改应用程序的帧速率。

可以在项目或编译器设置中定义应用程序的初始帧速率,但是帧速率不会固定在该值。可以通过设置 Stage.frameRate 属性(或 Flex 中的 WindowedApplication.frameRate 属性)来更改帧速率。

根据应用程序的当前需要更改帧速率。例如,在应用程序不执行任何动画时,请降低帧速率。在要开始动画转换时提高帧速率。同样,如果应用程序正在后台运行(已失去焦点),您通常可以进一步降低帧速率。用户可能关注其他应用程序或任务。

以下是一些常规指导,用于开始确定适用于不同类型活动的合适帧速率:

  • 如果使用的是 Flex 框架,将起始帧速率保持为默认值。

  • 播放动画时,将帧速率设置为至少 20 帧/秒。通常不必超过 30 帧/秒。

  • 不播放动画时,12 帧/秒的帧速率可能就足够了。

  • 系统以本机帧速率播放加载的视频,而与应用程序帧速率无关。如果视频是应用程序中唯一的移动内容,12 帧/秒的帧速率可能就足够了。

  • 如果应用程序没有输入焦点,5 帧/秒的帧速率可能就足够了。

  • 当 AIR 应用程序不可见时,2 帧/秒或更低的帧速率可能就足够了。例如,如果应用程序最小化,则应用此准则。在台式机设备上,如果本机窗口的 visible 属性设置为 false ,也应用此准则。

对于 Flex 中的内置应用程序,spark.components.WindowedApplication 类已经内置了用于动态更改应用程序的帧速率的支持功能。当应用程序处于非活动状态时, backgroundFrameRate 属性将定义应用程序的帧速率。默认值为 1,该值将使用 Spark 框架构建的应用程序的帧速率更改为 1 帧/秒。您可以通过设置 backgroundFrameRate 属性来更改后台帧速率。您可以将此属性设置为其他值,或将其设置为 -1 以关闭自动帧速率限制。

有关动态更改应用程序的帧速率的详细信息,请参阅下列文章:

Grant Skinner 创建了一个帧速率节流器类。当应用程序处于后台时,您可以在应用程序中使用该类自动降低帧速率。有关更多信息以及下载 FramerateThrottler 类的源代码,请参阅 Grant 的文章 Idle CPU Usage in Adobe AIR and Flash Player,网址是 http://gskinner.com/blog/archives/2009/05/idle_cpu_usage.html