應用程式影格速率

一般而言,最好可以使用最低的影格速率獲得最佳的效能。

應用程式的影格速率可決定每個「應用程式的程式碼與顯示」週期可用的時間長度,如 執行階段程式碼執行基本概念 中所述。較高的影格速率的動畫會較為順暢。不過,當動畫或其他視覺變更未發生時,通常不需要高影格速率。較高的影格速率會比較低速率耗用較多的 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 類別的原始程式碼,請參閱 Adobe AIR 與 Flash Player 中 Grant 的「閒置 CPU 使用率 」一文,網址為: http://gskinner.com/blog/archives/2009/05/idle_cpu_usage.html