AIR for TV アプリケーションを作成する際に、Stage クラスを操作する場合は次の点を考慮してください。
-
画面解像度
-
安全表示領域
-
ステージの拡大/縮小モード
-
ステージの配置
-
ステージの表示状態
-
複数の画面サイズのデザイン
-
ステージの画質設定
画面解像度
現在では、通常のテレビデバイスの画面解像度は 540p、720p、1080p のいずれかです。これらの画面解像度は ActionScript Capabilities クラスでは次の値となります。
画面解像度
|
Capabilities.screenResolutionX
|
Capabilities.screenResolutionY
|
540p
|
960
|
540
|
720p
|
1280
|
720
|
1080p
|
1920
|
1080
|
特定のデバイス向けにフルスクリーンの AIR for TV アプリケーションを作成する場合は、デバイスの画面解像度に
Stage.stageWidth
および
Stage.stageHeight
をハードコーディングします。一方、複数のデバイスで実行するフルスクリーンのアプリケーションを作成する場合は、
Capabilities.screenResolutionX
プロパティおよび
Capabilities.screenResolutionY
プロパティを使用して、Stage のサイズを設定します。
次に、例を示します。
stage.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;
安全表示領域
テレビの「安全表示領域」とは、画面の境界からのインセットとなる画面の領域のことです。この領域は、エンドユーザーが領域全体を見ることのできる十分な距離があり、テレビのベゼル部で隠れる部分のないインセットです。画面周囲にある物理的なフレームであるベゼルは製造元によって異なるため、必要となるインセットも異なります。安全表示領域では、画面の可視領域の確保を試みます。安全表示領域は、「タイトル安全区域」とも呼ばれています。
「オーバースキャン」は、ベゼルの後方にあるので表示されない画面領域です。
画面の各エッジのインセットは 7.5% とすることをお勧めします。次に、例を示します。
フルスクリーンの AIR for TV アプリケーションをデザインする場合は、次のように常に安全表示領域を考慮してください。
次の表に、7.5% のインセットを使用した一般的な画面解像度のそれぞれについて、安全表示領域のサイズを示します。
画面解像度
|
安全表示領域の幅と高さ
|
左右のインセットの幅
|
上下のインセットの高さ
|
960 x 540
|
816 x 460
|
72
|
40
|
1280 x 720
|
1088 x 612
|
96
|
54
|
1920 x 1080
|
1632 x 918
|
144
|
81
|
ただし、ベストプラクティスは常に安全表示領域を動的に計算することです。次に、例を示します。
var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int;
horizontalInset = .075 * Capabilities.screenResolutionX;
verticalInset = .075 * Capabilities.screenResolutionY;
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset);
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);
ステージの拡大/縮小モード
Stage.scaleMode
を
StageScaleMode.NO_SCALE
に設定し、ステージのサイズ変更イベントを監視します。
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, layoutHandler);
この設定によって、ステージ座標がピクセル単位の座標と同じになります。この設定を
FULL_SCREEN_INTERACTIVE
表示状態および
TOP_LEFT
ステージ配置と共に使用すると、安全表示領域を効果的に使用できます。
特に、フルスクリーンアプリケーションでは、この拡大/縮小モードは、Stage クラスの
stageWidth
プロパティと
stageHeight
プロパティが、Capabilities クラスの
screenResolutionX
プロパティと
screenResolutionY
プロパティに一致するということを意味します。
さらに、アプリケーションのウィンドウサイズが変更されても、ステージコンテンツは定義されたサイズで維持されます。ランタイムはレイアウトや拡大/縮小を自動的に実行しません。また、ウィンドウサイズが変更された場合、ランタイムは Stage クラスの
resize
イベントを送出します。このため、アプリケーションの開始時およびアプリケーションウィンドウのサイズ変更時におけるアプリケーションのコンテンツの調整方法を完全に制御できます。
注意:
NO_SCALE
の動作はあらゆる AIR アプリケーションで同様です。ただし、AIR for TV アプリケーションでは、この設定の使用が安全表示領域を使用する上で不可欠になります。
ステージの配置
Stage.align
を
StageAlign.TOP_LEFT
に設定します。
stage.align = StageAlign.TOP_LEFT;
この配置により、画面の左上隅に
0,0
座標が配置されます。これは、ActionScript を使用したコンテンツの配置に便利です。
この設定を
NO_SCALE
拡大/縮小モードと
FULL_SCREEN_INTERACTIVE
表示状態と共に使用すると、安全表示領域を効果的に使用できます。
ステージの表示状態
フルスクリーンの AIR for TV アプリケーションの
Stage.displayState
を
StageDisplayState.FULL_SCREEN_INTERACTIVE
に設定します。
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
この値により、ユーザー入力が許可され、画面全体にステージを拡大するように AIR アプリケーションが設定されます
FULL_SCREEN_INTERACTIVE
設定を使用することをお勧めします。この設定を
NO_SCALE
拡大/縮小モードと
TOP_LEFT
ステージ配置と共に使用すると、安全表示領域を効果的に使用できます。
このため、フルスクリーンのアプリケーションの場合は、メインのドキュメントクラスの
ADDED_TO_STAGE
イベントのハンドラー内で、次のように指定します。
private function onStage(evt:Event):void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, onResize);
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
}
次に、
RESIZE
イベントのハンドラー内で、次のように指定します。
private function onResize(evt:Event):void
{
if ((Capabilities.screenResolutionX == stage.stageWidth) &&
(Capabilities.screenResolutionY == stage.stageHeight))
{
// Calculate and save safe viewing area dimensions.
}
}
ステージの横と縦のサイズが
Capabilities.screenResolutionX
と
screenResolutionY
に等しい場合、AIR for TV によってハードウェアで可能な最高のビデオとグラフィックの再現性がもたらされます。
注意:
グラフィックおよびビデオをテレビ画面に表示したときのサイズは、
Capabilities.screenResolutionX
値と
screenResolutionY
値で指定されたサイズとは異なる可能性があります。これらの値は、AIR for TV を実行するデバイスによって決まります。例えば、AIR for TV を実行するセットトップボックスのスクリーン解像度が 1280 x 720 で、接続されたテレビのスクリーン解像度が 1920 x 1080 の場合があります。ただし、AIR for TV によってハードウェアで可能な最高の再現性がもたらされます。したがって、この例では、ハードウェアによって、スクリーン解像度 1920 x 1080 を使用して 1080p ビデオが表示されます。
複数の画面サイズのデザイン
複数の AIR for TV デバイス上で動作し正常に表示される、フルスクリーンの AIR for TV アプリケーションを開発することができます。次の手順を実行してください。
-
ステージプロパティの
scaleMode
、
align
および
displayState
を、それぞれ、
StageScaleMode.NO_SCALE
、
StageAlign.TOP_LEFT
、
StageDisplayState.FULL_SCREEN_INTERACTIVE
という推奨値に設定します。
-
Capabilities.screenResolutionX
および
Capabilities.screenResolutionY
に基づいて安全表示領域を設定します。
-
安全表示領域の幅と高さに従ってコンテンツのサイズとレイアウトを調節します。
コンテンツのオブジェクトは大きなものとなります(特にモバイルデバイスアプリケーションと比較した場合)。ただし、動的レイアウト、相対位置指定およびアダプティブコンテンツなどの概念に変わりはありません。これらの概念をサポートする ActionScript について詳しくは、「
複数の画面サイズ向けのモバイル Flash コンテンツのオーサリング
」を参照してください。
ステージの画質
AIR for TV アプリケーション向けの
Stage.quality
プロパティは、常に
StageQuality.High
です。これを変更することはできません。
このプロパティは、すべての Stage オブジェクトのレンダリング画質を指定します。