アプリケーションのフレームレート

一般的に、パフォーマンスを改善するには、可能な限り低いフレームレートを使用します。

アプリケーションのフレームレートによって、「アプリケーションコードおよびレンダリング」の各サイクルに使用できる時間が決まります。詳しくは、 ランタイムコードの実行の基礎 を参照してください。フレームレートが高いほど、アニメーションの動きがスムーズになります。ただし、多くの場合、アニメーションや他の視覚的な変化がないときに高いフレームレートを使用する理由はありません。フレームレートが高くなると、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 で参照してください。