若要创作 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.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;
安全观看区域
电视机上的
安全观看区域
是指沿屏幕边缘向内缩放而形成的一个屏幕区域。该区域的内缩距离足够大,可确保最终用户能够看到整个区域,而不会被电视外壳的边缘所遮盖。由于电视外壳边缘(形成屏幕的物理边框)的宽度因制造商而异,因此所需的内缩距离也会有所不同。安全观看区域试图保证屏幕可见区域的准确性。安全观看区域也称为
标题安全区域
。
过扫描
区域是指被外壳边缘遮盖的不可见屏幕区域。
Adobe 建议在屏幕的每个边缘向内缩放 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.scaleMod
e 设置为
StageScaleMode.NO_SCALE
,并侦听舞台的 resize 事件。
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 应用程序将扩展舞台以覆盖整个屏幕(允许用户输入)。
Adobe 建议您使用
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
。您无法更改它。
此属性指定所有舞台对象的呈现品质。