AIR for TV 應用程式設計注意事項

視訊注意事項

視訊編碼原則

將視訊串流至電視裝置時,Adobe 建議採取下列編碼原則:

視訊轉碼器:

H.264,主要或高描述檔,漸進式編碼

解析度:

720i、720p、1080i 或 1080p

影格速率:

每秒 24 格,或每秒 30 格

音效轉碼器:

AAC-LC 或 AC-3、44.1 kHz、立體聲或這些多頻道音效解碼器:E-AC-3、DTS、DTS Express、DTS-HD High Resolution Audio 或 DTS-HD Master Audio

混合位元速率:

視可用頻寬而定,最高 8M bps

音效位元速度:

最高 192 Kbps

像素外觀比例:

1 × 1

針對傳遞至 AIR for TV 裝置的視訊,Adobe 建議採用 H.264 轉碼器。

備註: AIR for TV 也支援以 Sorenson Spark 或 On2 VP6 轉碼器編碼的視訊。不過,硬體無法解碼和顯示這些轉碼器。相反地,執行階段會使用軟體來解碼並顯示這些轉碼器,因此,視訊會以極慢的影格速率播放。因此,請儘可能使用 H.264。

StageVideo 類別

AIR for TV 支援直接在硬體中解碼和顯示 H.264 編碼視訊。您可以使用 StageVideo 類別來啟用此功能。

請參閱「ActionScript 3.0 開發人員指南」的 使用硬體加速呈現方式的 StageVideo 類別 ,以取得下列方面的詳細資訊:

  • StageVideo 類別及相關類別的 API。

  • StageVideo 類別的使用限制。

為了讓使用 H.264 編碼視訊 Video 物件的現有 AIR 應用程式獲得最佳支援,AIR for TV 會「在內部」使用 StageVideo 物件。此作法可讓視訊播放從硬體解碼和顯示中獲益。不過,Video 物件有著與 StageVideo 物件相同的限制。例如,如果應用程式嘗試旋轉視訊,視訊並不會旋轉,因為視訊是由硬體顯示,而非執行階段。

不過,當您撰寫新的應用程式時,請針對 H.264 編碼視訊使用 StageVideo 物件。

如需 StageVideo 類別的使用範例,請參閱 在電視上傳遞 Flash Platform 的視訊與內容

視訊傳遞原則

在 AIR for TV 裝置上播放視訊期間,網路的可用頻寬可能會有所變化。例如,可能有其他使用者開始使用同一條網際網路連線,而使這類變化產生。

因此,Adobe 建議讓視訊傳遞系統使用最適化位元傳輸速率功能。例如,在伺服端上,Flash Media Server 支援最適化位元傳輸速率功能。在用戶端,您可以使用 Open Source Media Framework (OSMF)。

以下是可用來透過網路,將視訊內容傳遞至 AIR for TV 應用程式的通訊協定:
  • HTTP 和 HTTPS 動態串流 (F4F 格式)

  • RTMP、RTMPE、RTMFP、RTMPT 和 RTMPTE Streaming

  • HTTP 和 HTTPS 漸進式下載

如需詳細資訊,請參閱下列章節:

音效注意事項

在 AIR for TV 應用程式中,用於播放聲音的 ActionScript 與在其他 AIR 應用程式中使用的相同。如需詳細資訊,請參閱「ActionScript 3.0 開發人員指南」的 處理聲音

關於 AIR for TV 中的多頻道音效支援,請注意下列幾點:

  • AIR for TV 支援依進度從 HTTP 伺服器下載的視訊的多頻道音效。尚未在從 Adobe Flash Media Server 串流的視訊中提供多頻道音效的支援。

  • 雖然 AIR for TV 支援許多音效解碼器,但並非所有 AIR for TV 裝置 都支援整個組合。使用 flash.system.Capabilities 方式 hasMultiChannelAudio() 來檢查 AIR for TV 裝置是否支援特定多管道音效解碼器,例如 AC-3。

    例如,考量會依進度從伺服器下載視訊檔案的應用程式。伺服器有不同的 H.264 視訊檔,可支援各種多頻道的音效解碼器。應用程式會使用 hasMultiChannelAudio() 來判斷要向伺服器幽球哪一個視訊檔案。 或者,應用程式可將 Capabilities.serverString 中包含的字串傳送給伺服器。字串表示是否還有多頻道音效解碼器,讓伺服器選擇適當的視訊檔案。

  • 使用其中一個 DTS 音效轉碼器時,會出現 hasMultiChannelAudio() 傳回 true 但無法播放 DTS 音效的情形。

    例如,請考慮具有 S/PDIF 輸出的 Blu-ray 播放程式連接到舊版擴音器。舊版擴音器不支援 DTS,但是 S/PDIF 沒有通訊協定可通知 Blu-ray 播放程式。如果 Blu-ray 播放程式傳送 DTS 串流到舊版擴音器,使用者不會聽到任何聲音。因此,使用 DTS 時,最好的方法就是提供使用者介面,讓使用者可以指示是否播放出任何聲音。然後,您的應用程式就能回復至不同的轉碼器。

下表摘述在 AIR for TV 應用程式中,使用不同音效轉碼器的時機。表格也表示 AIR for TV 裝置使用硬體加速器來解碼視訊解碼器的時間。硬體解碼可改善效能,減輕 CPU 負載。

音效轉碼器

在 AIR for TV 裝置上的可用性

硬體解碼

何時該使用此音效轉碼器

詳細資訊

AAC

永遠

永遠

在以 H.264 編碼的視訊中。

音效串流,例如網際網路音樂串流服務。

使用純音效 AAC 串流時,請將音效串流封裝在 MP4 容器中。

mp3

永遠

應用程式 SWF 檔中的聲音。

在以 Sorenson Spark 或 On2 VP6 編碼的視訊中。

使用 mp3 音效的 H.264 視訊無法在 AIR for TV 裝置上播放。

AC-3 (杜比數位)

E-AC-3 (加強杜比音效)

DTS Digital Surround

DTS Express

DTS-HD High Resolution Audio

DTS-HD Master Audio

檢查

在以 H.264 編碼的視訊中。

通常,AIR for TV 會將多管道視訊串流傳到解碼與播放音效的外部音效/視訊接收器。

Speex

永遠

接收即時語音串流。

使用 Speex 音效的 H.264 視訊無法在 AIR for TV 裝置上播放。請僅與 Sorenson Spark 或 On2 VP6 編碼視訊搭配使用 Speex。

NellyMoser

永遠

接收即時語音串流。

使用 NellyMoser 音效的 H.264 視訊無法在 AIR for TV 裝置上播放。請僅與 Sorenson Spark 或 On2 VP6 編碼視訊搭配使用 NellyMoser。

備註: 某些視訊檔案包含兩個音效串流。例如,視訊檔可同時包含 AAC 串流與 AC3 串流。AIR for TV 並不支援這樣的視訊檔案,且使用這類檔案可能會導致視訊沒有聲音。

圖形硬體加速

使用硬體圖形加速

AIR for TV 裝置提供 2D 圖形作業的硬體加速功能。本裝置的硬體圖形加速器會執行下列作業,以減輕 CPU 的負擔:

  • 點陣圖顯示

  • 點陣圖縮放

  • 點陣圖混合

  • 矩形實心填滿

此硬體圖形加速可讓 AIR for TV 應用程式中的許多圖形作業展現高度效能。其中部分作業包括:

  • 滑動轉場

  • 縮放轉場

  • 淡入與淡出

  • 以 Alpha 複合多個影像

若要運用硬體圖形加速來提高這幾種作業的效能,請採取下列其中一種技術:

  • 在 MovieClip 物件和其他內容大多不變的顯示物件上,將 cacheAsBitmap 屬性設為 true 。然後,在這些物件上執行滑動轉場、漸淡轉場和 Alpha 混合。

  • 在您要縮放或轉譯 (套用 x 和 y 重新定位) 的顯示物件上,使用 cacheAsBitmapMatrix 屬性。

    裝置的硬體加速器會藉由使用 Matrix 類別作業進行縮放和轉譯,來執行這些作業。再設想另一種情況,假設顯示物件的 cacheAsBitmap 屬性設為 true ,而您變更該物件的尺寸。當尺寸變更時,執行階段軟體會重繪點陣圖。使用軟體重繪的效能,會低於使用 Matrix 作業進行硬體加速縮放的效能。

    例如,假設應用程式顯示的影像會在使用者選取影像時放大。多使用 Matrix 縮放作業幾次,即可得到影像正在放大的效果。不過,視原始影像和最終影像的大小而定,最終影像的品質可能不理想。因此,完成放大作業後,請重設顯示物件的尺寸。因為 cacheAsBitmap true ,所以執行階段軟體會重繪顯示物件,但僅重繪一次,而且會顯示高品質影像。

    備註: 通常,AIR for TV 裝置並不支援硬體加速的旋轉和傾斜。因此,如果您在 Matrix 類別中指定旋轉和傾斜,AIR for TV 就會在軟體中執行所有的 Matrix 作業。這些軟體作業會對效能產生不利的影響。
  • 使用 BitmapData 類別以建立自訂點陣圖快取行為。

如需有關點陣圖快取的詳細資訊,請參閱下列章節:

管理圖形記憶體

為了執行圖形加速作業,硬體加速器會使用特殊的圖形記憶體。如果應用程式用盡所有圖形記憶體,則應用程式執行速度會變慢,因為 AIR for TV 會退一步使用軟體來處理圖形作業。

若要管理應用程式的圖形記憶體使用情形,您可以:

  • 在使用完影像或其他點陣圖資料後,釋放相關的圖形記憶體。若要執行這項操作,請呼叫 Bitmap 物件之 bitmapData 屬性的 dispose() 方法。例如:

    myBitmap.bitmapData.dispose();
    備註: 釋放 BitmapData 物件的參考並不會立即釋放圖形記憶體。執行階段的記憶體回收程式最後還是會釋放圖形記憶體,但是呼叫 dispose() 讓應用程式有更大的控制權。
  • 使用 Adobe 提供的 AIR 應用程式 PerfMaster Deluxe,充分瞭解目標裝置上的硬體圖形加速。此應用程式會顯示各種作業執行時的每秒影格數。請使用 PerfMaster Deluxe 來比較相同作業的不同實作。例如,比較移動點陣圖影像與移動向量影像有何不同。您可以從 電視版 Flash Platform 取得 PerfMaster Deluxe。

管理顯示清單

若要讓顯示物件變成不可見的,請將物件的 visible 屬性設定為 false 。然後,物件仍會在顯示清單上,但 AIR for TV 不會呈現或顯示它。這項技術適用於經常往返於檢視的物件,因為它只會產生些微處理負荷。不過,將 visible 屬性設為 false 並不會釋放物件的任何資源。因此,當您完成顯示某個物件,或者至少有一段時間不再需要它,請從顯示清單移除該物件。另外,請將物件的所有參照設定為 null 。這些動作可讓記憶體回收程式釋放物件的資源。

PNG 與 JPEG 影像用法

PNG 和 JPEG 是應用程式中常見的兩種影像格式。關於 AIR for TV 應用程式中的這些影像格式,請注意下列幾點:

  • AIR for TV 通常使用硬體加速來解碼 JPEG 檔。

  • AIR for TV 通常使用軟體來解碼 PNG 檔。在軟體中解碼 PNG 檔的速度很快。

  • PNG 是唯一支援透明度 (Alpha 色版) 的跨平台點陣圖格式,

因此,請在應用程式中依下列原則使用這些影像格式:

  • 使用相片的 JPEG 檔可從硬體加速解碼中獲益。

  • 將 PNG 影像檔用於使用者介面元素。使用者介面元素可能有 Alpha 設定,而軟體解碼可以提供足夠的效能來顯示使用者介面元素。

AIR for TV 應用程式的舞台

編寫 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%。例如:

檢視完整大小的圖形
螢幕解析度 1920 x 1080 的安全檢視區域

設計全螢幕的 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 設為 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 應用程式將舞台展開佈滿整個螢幕,並允許使用者輸入。

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 事件的處理常式中:

  • 比較螢幕解析度大小與舞台的寬度和高度。如果相同,則表示 RESIZE 事件發生的原因是舞台顯示狀態已變更為 FULL_SCREEN_INTERACTIVE

  • 計算並儲存安全檢視區域及對應的內移距尺寸。

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 應用程式。請執行下列動作:

  1. 將舞台屬性 scaleMode align displayState 設為建議值: StageScaleMode.NO_SCALE StageAlign.TOP_LEFT StageDisplayState.FULL_SCREEN_INTERACTIVE

  2. 根據 Capabilities.screenResolutionX Capabilities.screenResolutionY 來設定安全檢視區域。

  3. 根據安全檢視區域的寬度和高度,調整內容的大小和版面。

    雖然內容的物件會很大 (尤其是與行動裝置應用程式比較),但動態版面、相對位置及最適化內容等的概念都相同。如需 ActionScript 支援這些概念的進一步資訊,請參閱 編寫多種螢幕尺寸適用的行動 Flash 內容

舞台品質

AIR for TV 應用程式的 Stage.quality 屬性永遠是 StageQuality.High 。您無法改變。

此屬性指定所有 Stage 物件的顯示品質。

遙控器輸入處理

使用者通常以遙控器來與 AIR for TV 應用程式互動。不過,處理按鍵輸入的方式,與處理桌上型應用程式中鍵盤按鍵輸入的方式相同。具體而言,請處理事件 KeyboardEvent.KEY_DOWN 。如需詳細資訊,請參閱「ActionScript 3.0 開發人員指南」的 擷取鍵盤輸入

遙控器的按鍵對應於 ActionScript 常數。例如,遙控器方向鍵台的按鍵對應如下:

遙控器的方向鍵台按鍵

ActionScript 3.0 常數

向上

Keyboard.UP

向下

Keyboard.DOWN

靠左

Keyboard.LEFT

靠右

Keyboard.RIGHT

「確定」或「選取」

Keyboard.ENTER

AIR 2.5 已新增其他許多 Keyboard 常數來支援遙控器輸入。如需完整清單,請參閱「適用於 Adobe Flash Platform 的 ActionScript 3.0 參考」的 Keyboard 類別

為了儘可能確保應用程式可以在許多裝置上執行,Adobe 建議下列作法:

  • 儘可能只使用方向鍵台按鍵。

    不同的遙控器裝置會有一組不同的按鍵。不過,這些遙控器裝置通常一定有方向鍵台按鍵。

    例如,藍光播放機的遙控器通常沒有「頻道上移」和「頻道下移」鍵。此外,並不是所有遙控器都有播放、暫停及停止鍵。

  • 如果方向鍵台按鍵不敷應用程式所需,請使用「選單」和「資訊」鍵。

    「選單」和「資訊」鍵是第二常見的遙控器按鍵。

  • 考量使用萬用遙控器的頻率。

    即使是針對特定裝置建立應用程式,也必須瞭解許多使用者並不使用裝置隨附的遙控器。他們使用的是萬用遙控器。而且,使用者在萬用遙控器上為各按鍵設定的功能,不一定與裝置遙控器的按鍵功能相同。因此,建議只使用最常見的按鍵。

  • 確定使用者永遠可以使用其中一個方向鍵台按鍵來跳離情境。

    有時候,應用程式不得不使用常見遙控器按鍵以外的其他按鍵。使用其中一個方向鍵台按鍵作為跳離途徑,可確保應用程式在所有裝置上都不會有使用卡住的問題。

  • 不需要指標輸入,除非您知道目標 AIR for TV 具有指標輸入功能。

    雖然許多桌上型應用程式會需要滑鼠輸入,但是大多數的電視都不支援指標輸入。因此,如果您要將桌上型應用程式轉換為在電視上執行,請務必將應用程式修改為不需要滑鼠輸入。這些修改包括變更事件處理方式和對使用者顯示的指示。例如,當應用程式的啟動畫面出現時,請不要顯示「按一下以開始」這類文字。

管理焦點

當桌上型應用程式中的使用者介面元素取得焦點時,就成為使用者輸入事件 (如鍵盤和滑鼠事件) 的目標。此外,應用程式會將具有焦點的使用者介面元素反白。在 AIR for TV 應用程式中,管理焦點的方式不同於桌上型應用程式,原因如下:

  • 桌上型應用程式通常使用 TAB 鍵將焦點切換至下一個使用者介面元素。使用 TAB 鍵並不適用於 AIR for TV 應用程式。遙控器裝置通常沒有 TAB 鍵。因此,並不適合像在桌上型電腦一樣使用 DisplayObject 的 tabEnabled 屬性來管理焦點。

  • 桌上型應用程式通常需要使用者以滑鼠將焦點放在使用者介面元素上。

因此,請在應用程式中執行下列動作:

  • 在舞台中新增事件偵聽程式來偵聽 Keyboard 事件,例如 KeyboardEvent.KEY_DOWN

  • 提供應用程式邏輯,來判斷要向使用者反白的使用者介面元素。請確定應用程式啟動後,會反白使用者介面元素。

  • 根據應用程式邏輯,將舞台收到的 Keyboard 事件傳送給適當的使用者介面元素物件。

    您也可以使用 Stage.focus Stage.assignFocus() ,將焦點指定給使用者介面元素。然後,您可以在該 DisplayObject 中新增事件偵聽程式,以便接收鍵盤事件。

使用者介面設計

為了讓 AIR for TV 應用程式的使用者介面在電視上正常運作,請同時採納以下方面的建議:

  • 應用程式的反應性

  • 應用程式的易用性

  • 使用者的個性與期望

反應性

使用下列秘訣,提高 AIR for TV 應用程式的反應性。

  • 儘可能縮小應用程式的初始 SWF 檔。

    在初始 SWF 檔中,只載入啟動應用程式所需的資源。例如,只載入應用程式的啟動畫面影像。

    雖然這是對於桌上型 AIR 應用程式的建議,但對於 AIR for TV 裝置更為重要。其中一個原因是,AIR for TV 裝置並沒有相當於桌上型電腦的處理能力。此外,這些裝置是將應用程式儲存在 Flash 記憶體中,存取速度不如桌上型電腦的硬碟來得快。

  • 使應用程式以每秒至少 20 格的影格速率執行。

    請將您的圖形設計成符合此目標。圖形作業的複雜度會影響每秒影格數。如需改善顯示效能的秘訣,請參閱 最佳化 Adobe Flash Platform 的效能

    備註: AIR for TV 裝置的圖形硬體通常以 60 Hz 或 120 Hz (每秒 60 或 120 次) 的頻率來更新螢幕。例如,為了在 60-Hz 或 120-Hz 的螢幕上顯示,硬體會以每秒 30 格或每秒 60 格的頻率掃描舞台是否有更新。不過,使用者是否體驗到這些較高的影格速率,需視應用程式圖形作業的複雜度而定。
  • 在使用者輸入的 100 - 200 毫秒內更新螢幕。

    如果更新太久,使用者通常會變得不耐煩,而開始不斷按按鍵。

易用性

AIR for TV 應用程式的使用者是在「客廳」環境裡。他們會坐在房間裡電視機的另一頭,大約相距 10 英呎。房間有時很暗。他們通常使用遙控器裝置來輸入選擇。可能有多人同時使用應用程式,有時一起使用,有時輪流使用。

因此,若要設計方便在電視上使用的使用者介面,請注意下列幾點:

  • 使用者介面元素要大。

    當設計文字、按鈕或其他任何使用者介面元素時,請考慮到使用者是坐在房間裡的另一頭。一切都要能夠在那樣的距離 (例如 10 英呎) 內輕鬆地觀看和閱讀。不要因為螢幕夠大就想要塞滿螢幕。

  • 對比要夠,讓人能夠從房間裡的另一頭輕鬆地觀看和閱讀內容。

  • 具有焦點的使用者介面元素要亮,才能明顯表示焦點在該元素。

  • 必要時才使用動畫。例如,使用滑動效果來切換畫面可以有不錯的連貫效果。不過,如果動畫無助於使用者進行瀏覽,或不是應用程式固有的,反而會分散注意力。

  • 務必在使用者介面上提供明顯的方式,讓使用者回到先前的畫面。

如需使用遙控器的詳細資訊,請參閱 遙控器輸入處理

使用者的個性與期望

AIR for TV 應用程式的使用者通常是要在輕鬆愉快的環境中,享受電視機娛樂。他們不見得具備電腦或技術方面的知識。

因此,請設計具有下列特色的 AIR for TV 應用程式:

  • 不使用專業術語。

  • 避免使用非回應不可的對話方塊。

  • 不同於針對工作或技術環境,針對客廳環境要採用輕鬆而客氣的指示。

  • 使用符合電視觀賞者預期的高播放品質圖形。

  • 建立能輕鬆地與遙控器裝置一起使用的使用者介面。不要使用適用於桌上型或行動應用程式的使用者介面或設計元素。例如,桌上型和行動裝置上的使用者介面通常需要用滑鼠或手指點選及按一下按鈕。

字體及文字

您可以使用裝置字體或 AIR for TV 應用程式內嵌的字體。

裝置字體是安裝在裝置上的字體。所有 AIR for TV 裝置都有下列裝置字體:

字體名稱

說明

_sans

_sans 裝置字體是 sans-serif 字樣。 _sans 裝置字體 (安裝在所有 AIR for TV 裝置上) 是 Myriad Pro。通常,在電視上 sans-serif 字樣看起來的效果優於 serif 字樣,這是檢視距離所造成的緣故。

_serif

_serif 裝置字體是 serif 字樣。所有 AIR for TV 裝置上都會安裝的 _serif 裝置字體是 Minion Pro。

_typewriter

_typewriter 裝置字體是等寬字體。所有 AIR for TV 裝置上都會安裝的 _typewriter 裝置字體是 Courier Std。

所有 AIR for TV 裝置也都有下列亞洲裝置字體:

字體名稱

語言

字樣類別

地區設定代碼

RyoGothicPlusN-Regular

日文

sans

ja

RyoTextPlusN-Regular

日文

serif

ja

AdobeGothicStd-Light

韓文

sans

ko

AdobeHeitiStd-Regular

簡體中文

sans

zh_CN

AdobeSongStd-Light

簡體中文

serif

zh_CN

AdobeMingStd-Light

繁體中文

serif

zh_TW 和 zh_HK

這些 AIR for TV 裝置字體具有下列特性:

  • 來自 Adobe® Type Library

  • 在電視上效果精緻

  • 針對視訊字幕所設計

  • 是外框字體,不是點陣圖字體

備註: 裝置製造商通常會在裝置上安裝其他裝置字體。除了 AIR for TV 裝置字體,還會安裝這些由製造商提供的裝置字體。

Adobe 提供一個稱為 FontMaster Deluxe 的應用程式,可顯示裝置上的所有裝置字體。您可以從 電視版 Flash Platform 取得此應用程式。

您也可以將字體內嵌於 AIR for TV 應用程式中。如需內嵌字體的詳細資訊,請參閱「ActionScript 3.0 開發人員指南」的 進階文字顯示

關於使用 TLF 文字欄位,Adobe 有下列建議:

  • 針對亞洲語言文字,請使用 TLF 文字欄位,以利用應用程式執行所在的地區設定。設定與 TLFTextField 物件相關之 TextLayoutFormat 物件的 locale 屬性。若要判斷目前的地區設定,請參閱「ActionScript 3.0 開發人員指南」的 選擇地區設定

  • 如果字體不是 AIR for TV 裝置字體,請在 TextLayoutFormat 物件的 fontFamily 屬性中指定字體名稱。如果裝置上有此字體,AIR for TV 就會使用此字體。如果裝置上沒有您要求的字體,AIR for TV 會根據 locale 設定,以適當的 AIR for TV 裝置字體替代。

  • fontFamily 屬性中指定 _sans _serif _typewriter ,同時設定 locale 屬性,讓 AIR for TV 選擇正確的 AIR for TV 裝置字體。視地區而定,AIR for TV 會從本身的亞洲裝置字體組或非亞洲裝置字體組中選擇字體。這些設定提供簡單的方式,自動針對四大亞洲地區設定和英文使用正確字體。

備註: 如果您針對亞洲語言文字使用傳統文字欄位,請指定 AIR for TV 裝置字體的字體名稱,以確保顯示正確。如果您知道目標裝置上還有安裝其他字體,也可以指定該字體。

關於應用程式效能,請注意下列幾點:

  • 傳統文字欄位提供比 TLF 文字欄位更快的效能。

  • 使用點陣圖字體的傳統文字欄位提供的效能最快。

    不同於外框字體提供每個字元的外框資料,點陣圖字體會提供每個字元的點陣圖。裝置字體和內嵌字體都可以是點陣圖字體。

  • 如果您指定裝置字體,請確定目標裝置上已安裝該裝置字體。如果裝置上未安裝該裝置字體,AIR for TV 會尋找並使用裝置上安裝的其他字體。不過,此行為會降低應用程式的效能。

  • 如同於所有顯示物件,如果 TextField 物件大多不變,請將物件的 cacheAsBitmap 屬性設為 true 。此設定可改善轉場 (如淡入、滑動及 Alpha 混合) 的效能。使用 cacheAsBitmapMatrix 進行縮放和轉譯。如需詳細資訊,請參閱 圖形硬體加速

檔案系統安全性

AIR for TV 應用程式是 AIR 應用程式,因此可以存取裝置的檔案系統。不過,在「客廳」裝置中,應用程式不能存取裝置的系統檔案或其他應用程式的檔案,這一點非常重要。電視和相關裝置的使用者不能容忍任何裝置失靈情形 — 畢竟他們是在看電視。

因此,AIR for TV 應用程式只提供裝置檔案系統的有限檢視。使用 ActionScript 3.0 時,應用程式只能存取特定目錄 (和其子目錄)。此外,您在 ActionScript 中使用的目錄名稱並不是裝置上的實際目錄名稱。這樣額外一層的保護,可避免 AIR for TV 應用程式惡意或意外存取不屬於它們的本機檔案。

如需詳細資訊,請參閱 AIR for TV 應用程式的目錄檢視

AIR 應用程式執行程序

AIR for TV 應用程式會在 AIR 應用程式執行程序內執行,如 AIR 應用程式執行程序 中所描述。

對於 AIR for TV 應用程式而言,唯一的差別在於它們對檔案系統的存取有限,如 檔案系統安全性 中所描述。

應用程式效期

不同於桌上型電腦環境,使用者無法關閉 AIR for TV 應用程式的執行視窗。因此,請提供使用者介面機制來結束應用程式。

通常,裝置可讓使用者透過遙控器的結束按鍵,無條件結束應用程式。不過,AIR for TV 不會將事件 flash.events.Event.EXITING 傳送至應用程式。因此,請經常儲存應用程式狀態,讓應用程式在下一次啟動時可以恢復到合理狀態。

HTTP Cookie

AIR for TV 支援 HTTP 永續性 Cookie 與工作階段 Cookie。AIR for TV 會將每一個 AIR 應用程式的 Cookie 儲存於特定應用程式目錄:

/app-storage/<app id>/Local Store

Cookie 檔案的名稱是 cookies

備註: 其他裝置上的 AIR,例如桌上型裝置,不會分開儲存每個應用程式的 Cookie。特定應用程式 Cookie 儲存區會支援 AIR for TV 的應用程式和系統安全性模型。

以下列方式使用 ActionScript 屬性 URLRequest.manageCookies

  • manageCookies 設為 true 。此值為預設值。這表示 AIR for TV 會自動將 Cookie 增加至 HTTP 要求,並記住 HTTP 回應中的 Cookie。

    備註: 即使 manageCookies true ,應用程式也可以使用 URLRequest.requestHeaders ,手動將 Cookie 新增至 HTTP 要求。如果此 Cookie 的名稱與 AIR for TV 管理的 Cookie 相同,則要求會包含兩個同名的 Cookie。這兩個 Cookie 的值可能不同。
  • manageCookies 設為 false 。此值表示應用程式負責在 HTTP 要求中傳送 Cookie,並記住 HTTP 回應中的 Cookie。

如需詳細資訊,請參閱 URLRequest