Om utformning av AIR for TV-program

Att tänka på vid videoanvändning

Riktlinjer för videokodning

Vid direktuppspelning av video till en tv-enhet bör du följa dessa kodningsriktlinjer:

Videokodek:

H.264, vanlig eller hög profil, progressiv kodning

Upplösning:

720i, 720p, 1080i eller 1080p

Bildrutefrekvens:

24 bildrutor per sekund eller 30 bildrutor per sekund

Ljudkodek

AAC-LC eller AC-3, 44,1 kHz, stereo, eller dessa flerkanalsljudkodekar: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio eller DTS-HD Master Audio

Kombinerad bithastighet:

upp till 8 Mbit/s beroende på tillgänglig bandbredd

Ljudbithastighet:

upp till 192 kbit/s

Pixelproportioner:

1 × 1

Du bör använda H.264-kodeken för video som levereras till AIR for TV-enheter.

Obs! AIR for TV har också stöd för video som kodats med Sorenson Spark- eller On2 VP6-kodekar. Maskinvaran kan däremot inte avkoda och visa dessa kodekar. I stället avkodas och visas dessa kodekar i körningsmiljön med hjälp av programvara, och därför spelas videon upp med en betydligt lägre bildrutefrekvens. Av den anledningen bör du använda H.264 om det går.

Klassen StageVideo

AIR for TV har stöd för maskinvaruavkodning och visning av H.264-kodad video. Använd klassen StageVideo för att aktivera den här funktionen.

Avsnittet Använda klassen StageVideo för maskinvaruaccelererad presentation i Utvecklarhandbok för ActionScript 3.0 innehåller information om:

  • API:t för klassen StageVideo och relaterade klasser.

  • begränsningar för klassen StageVideo.

För att ge bästa möjliga stöd till befintliga AIR-program som använder Video-objektet för H.264-kodad video, används ett StageVideo-objekt internt i AIR for TV. Det innebär att videouppspelningen kan utnyttja fördelarna med maskinvaruavkodning och visning. Dock har Video-objektet samma begränsningar som ett StageVideo-objekt. Om programmet till exempel försöker rotera videon händer ingenting, eftersom maskinvaran, inte miljön, visar videon.

När du skriver nya program kan du däremot använda StageVideo-objektet för H.264-kodad video.

Du hittar ett exempel på användning av StageVideo-klassen i Leverera video och innehåll för Flash-plattformen på tv .

Riktlinjer för videoleverans

På en AIR for TV-enhet kan nätverkets tillgängliga bandbredd variera under videouppspelning. De här variationerna kan till exempel inträffa när en annan användare börjar använda samma Internet-anslutning.

Du bör därför se till att ditt system för videoleverans använder funktioner för variabel bithastighet. På serversidan har till exempel Flash Media Server stöd för variabel bithastighet. På klientsidan kan du använda Open Source Media Framework (OSMF).

Följande protokoll är tillgängliga för leverans av videoinnehåll via nätverket till ett AIR for TV-program:
  • Dynamisk HTTP- och HTTPS-direktuppspelning (F4F-format)

  • RTMP-, RTMPE-, RTMFP-, RTMPT- och RTMPTE-direktuppspelning

  • Progressiv nedladdning för HTTP och HTTPS

Mer information finns i följande avsnitt:

Att tänka på vid ljudanvändning

ActionScript-koden för att spela upp ljud är likadan i AIR for TV-program som i andra AIR-program. Du hittar mer information i Arbeta med ljud i Utvecklarhandbok för ActionScript 3.0 .

När det gäller flerkanalsljud i AIR for TV ska du tänka på följande:

  • AIR for TV har stöd för flerkanalsljud för videofilmer som progressivt laddas ned från en HTTP-server. Stöd för flerkanalsljud i videofilmsflöden från en FMS-server (Adobe Flash Media Server) är inte tillgängligt för tillfället.

  • Trots att AIR for TV har stöd för många ljudkodekar, är det inte alla AIR for TV -enheter som har stöd för samtliga. Använd flash.system.Capabilities -metoden hasMultiChannelAudio() för att kontrollera om en AIR for TV-enhet har stöd för en speciell ljudkodek för flera kanaler, till exempel AC-3.

    Tänk dig ett program som fortlöpande hämtar en videofil från en server. Servern har olika H.264-videofiler som har stöd för olika flerkanalsljudkodekar. Programmet kan använda hasMultiChannelAudio() för att bestämma vilken videofil som ska begäras från servern. Programmet kan även skicka strängen i Capabilities.serverString till servern. Strängen anger vilken flerkanalsljudkodek som är tillgänglig vilket gör att servern kan välja rätt videofil.

  • När en av DTS-ljudkodekarna används finns fall där hasMultiChannelAudio() returnerar true trots att DTS-ljudet inte spelas upp.

    Tänk dig till exempel att du har en Blu-ray-spelare, med en S/PDIF-utgång, ansluten till en gammal förstärkare. Den gamla förstärkaren saknar DTS-stöd, men för S/PDIF finns inget protokoll för att meddela Blu-ray-spelaren. Om Blu-ray-spelaren skickar DTS-strömmen till den gamla förstärkaren kommer användaren inte att höra något. Det är därför bäst när DTS användas att tillhandhålla ett gränssnitt så att användaren kan upptäcka om inget ljud spelas upp. Därefter kan programmet återställas till en annan kodek.

I följande tabell visas när olika ljudkodekar ska användas i AIR for TV-program. Av tabellen framgår även när AIR for TV-enheter använder maskinvaruacceleratorer för att avkoda en ljudkodek. Maskinvaruavkodning förbättrar prestandan och avlastar processorn.

Ljudkodek

Tillgänglighet på AIR for TV-enhet

Maskinvaruavkodning

Använd denna videokodek...

Mer information

AAC

Alltid

Alltid

För video som kodats med H.264.

För direktuppspelning av ljud, t.ex. via en Internet-musiktjänst.

Om du använder en AAC-ström med bara ljud kapslar du in ljudströmmen i en MP4-behållare.

mp3

Alltid

Nej

För ljud i programmets SWF-filer.

I videofilmer som avkodas med Sorenson Spark eller On2 VP6.

Ljudet spelas inte upp i AIR for TV-enheter när mp3 används i en H.264-video.

AC-3 (Dolby Digital)

E-AC-3 (Enhanced Dolby Digital)

DTS Digital Surround

DTS Express

DTS-HD High Resolution Audio

DTS-HD Master Audio

Kontrollera

Ja

För video som kodats med H.264.

Det vanliga är att AIR for TV skickar en flerkanalsljudström till en extern ljud-/videomottagare som avkodar och spelar upp ljudet.

Speex

Alltid

Nej

Tar emot ett direktuppspelande röstflöde.

Ljudet spelas inte upp i AIR for TV-enheter när Speex används i en H.264-video. Använd Speex endast för videofilmer som är kodade med Sorenson Spark eller On2 VP6.

NellyMoser

Alltid

Nej

Tar emot ett direktuppspelande röstflöde.

Ljudet spelas inte upp i AIR for TV-enheter när NellyMoser används i en H.264-video. Använd NellyMoser endast för videofilmer som är kodade med Sorenson Spark eller On2 VP6.

Obs! Vissa videofiler innehåller två ljudströmmar. En videofil kan till exempel innehålla både en AAC- och en AC3-ström. I AIR for TV finns inte stöd för sådana videofiler och om du använder sådana filer kan resultatet bli att inget ljud hörs från videon.

Maskinvaruacceleration för grafik

Använda maskinvaruacceleration för grafik

AIR for TV-enheter har maskinvaruacceleration för 2D-grafikåtgärder. Enhetens maskinvaruacceleratorer för grafik avlastar huvudprocessorn och hanterar följande åtgärder:

  • Bitmappsåtergivning

  • Bitmappsskalning

  • Bitmappsblandning

  • Fyllning av enfärgade rektanglar

Den här maskinvaruaccelerationen innebär att många grafikåtgärder i AIR for TV-program kan få höga prestanda. Bland de här åtgärderna finns:

  • Glidande övergångar

  • Skalande övergångar

  • Tona in och ut

  • Sammansättning av flera bilder med alfa

Använd någon av följande tekniker för att utnyttja prestandafördelarna med maskinvaruacceleration för grafik för den här typen av åtgärder:

  • Ange egenskapen cacheAsBitmap som true för MovieClip-objekt och andra visningsobjekt med innehåll som till större delen är oföränderligt. Utför sedan glidande övergångar, tonande övergångar och alfablandning på de här objekten.

  • Använd egenskapen cacheAsBitmapMatrix på visningsobjekt som du vill skala eller översätta (använd x- och y-omplacering).

    När åtgärder i Matrix-klassen används för skalning och översättning utförs åtgärderna av enhetens maskinvaruacceleratorer. Ett annat scenario är när du ändrar dimensionerna på ett visningsobjekt, som har egenskapen cacheAsBitmap inställd på true . När dimensionerna ändras ritas bitmappen om av miljöns programvara. Omritning med programvara medför sämre prestanda än skalning med maskinvaruacceleration via en Matrix-åtgärd.

    Tänk dig till exempel ett program som visar en bild, som expanderar när slutanvändaren markerar den. Använd Matrix-skalningsåtgärden flera gånger för att ge intryck av att bilden expanderas. Men beroende på storleken på originalbilden och den slutliga bilden kan kvaliteten på den slutliga bilden bli oacceptabel. Därför återställer du dimensionerna på visningsobjektet efter att expanderingsåtgärderna har slutförts. Eftersom cacheAsBitmap är true ritas visningsobjektet om av körningsmiljön, men bara en gång, och en bild med hög kvalitet återges.

    Obs! AIR for TV-enheter har vanligtvis inte stöd för maskinvaruaccelererad rotation och skevning. Om du anger rotation och skevning i klassen Matrix utförs därför alla Matrix-åtgärder i programvaran. De här programvaruåtgärderna kan ha en negativ effekt på prestanda.
  • Använd klassen BitmapData för att skapa ett eget bitmappscachningbeteende.

Här hittar du mer information om bitmappscachning:

Hantera grafikminne

För att utföra accelererade grafikåtgärder använder maskinvaruacceleratorer ett särskilt grafikminne. Om ditt program använder hela grafikminnet går programmet långsammare, eftersom AIR for TV återgår till att använda programvara för grafikåtgärder.

Så här hanterar du programmets användning av grafikminne:

  • När du är klar med användningen av en bild eller andra bitmappdata frigör du dess associerade grafikminne. Det gör du genom att anropa metoden dispose() för Bitmap-objektets bitmapData -egenskap. Till exempel:

    myBitmap.bitmapData.dispose();
    Obs! När referensen till BitmapData-objektet frigörs blir grafikminnet inte omedelbart ledigt. Miljöns skräpinsamlare frigör så småningom grafikminnet, men med ett anrop till dispose() får ditt program större kontroll.
  • Använd PerfMaster Deluxe, ett AIR-program från Adobe, för att få en bättre förståelse för maskinvaruacceleration för grafik på målenheten. Det här programmet visar antalet bildrutor per sekund för att köra olika åtgärder. Använd PerfMaster Deluxe för att jämföra olika implementeringar av en och samma åtgärd. Du kan till exempel jämföra flyttning av en bitmappsbild med flyttning av en vektorbild. Du kan hämta PerfMaster Deluxe på Flash-plattform för TV .

Hantera visningslistan

Om du vill göra ett visningsobjekt synligt ska du ställa in false för objektets visible -egenskap. Det kommer att finnas kvar i visningslistan, men AIR for TV kommer inte att återge eller visa det. Den här tekniken är användbar för objekt som ofta visas och tas bort, eftersom den har en liten inverkan på bearbetningsbelastningen. Om emellertid egenskapen visible sätts till false kommer inga av objektets resurser att frisläppas. Därför ska du, när objektet visats klart eller om det inte ska visas på en längre tid, ta bort det från visningslistan. Dessutom ska alla referenser till objektet sättas till null . Dessa åtgärder gör att skräpsamlaren kan frigöra objektets resurser.

Använda PNG- och JPEG-bilder

Två vanliga bildformat i program är PNG och JPEG. När det gäller dessa bildformat i AIR for TV-program bör du tänka på följande:

  • AIR for TV använder vanligen maskinvaruacceleration för att avkoda JPEG-filer.

  • AIR for TV använder vanligen programvara för att avkoda PNG-filer. Att avkoda PNG-filer i programvara går fort.

  • PNG är det enda bitmappsformatet för flera plattformar som stödjer genomskinlighet (som alfakanal).

Därför bör du använda bildformaten i dina program enligt följande:

  • Använd JPEG-filer för fotografier för att utnyttja maskinvaruaccelererad avkodning.

  • Använd PNG-filer för element i användargränssnittet. Element i användargränssnittet kan ha alfainställningar, och programvaruavkodning ger tillräckligt snabba prestanda för dessa.

Scenen i AIR for TV-program

När du skapar ett AIR for TV-program och arbetar med klassen Stage bör du tänka på följande:

  • Skärmupplösning

  • Säker yta för visning

  • Scenens skalningsläge

  • Scenens justering

  • Scenens visningsläge

  • Design för flera skärmstorlekar

  • Scenens kvalitetsinställning

Skärmupplösning

För tillfället har tv-enheter oftast en av dessa upplösningar: 540p, 720p eller 1080p. De här skärmupplösningarna resulterar i följande värden i ActionScript-klassen Capabilities:

Skärmupplösning

Capabilities.screenResolutionX

Capabilities.screenResolutionY

540p

960

540

720p

1280

720

1080p

1920

1 080

Om du vill skriva en helskärmsversion av ett AIR for TV-program för en viss enhet hårdkodar du Stage.stageWidth och Stage.stageHeight efter enhetens skärmupplösning. Om du däremot vill skriva en helskärmsversion av ett program som ska köras på flera enheter använder du egenskaperna Capabilities.screenResolutionX och Capabilities.screenResolutionY för att ange scenens dimensioner.

Till exempel:

stage.stageWidth = Capabilities.screenResolutionX; 
stage.stageHeight = Capabilities.screenResolutionY;

Säker yta för visning

Den säkra ytan för visning på en tv är ett område på skärmen som är lite indraget från skärmens kanter. Det här området är så pass indraget att slutanvändaren kan se hela området, utan att tevens kantlist skymmer någon del av det. Eftersom den här kantlisten inte ser likadan ut hos alla tillverkare varierar det indrag som krävs också. Med hjälp av den säkra ytan för visning blir det enklare att avgöra vilken del av skärmen som syns. Den säkra ytan för visning kallas även titelsäker yta .

Överskanning avser den del av skärmen som inte är synlig för att den döljs av kantlisten.

Du bör använda ett indrag på 7,5 % på vardera sida av skärmen. Till exempel:

Visa grafik i full storlek
Den säkra ytan för visning för en skärmupplösning på 1 920 x 1 080

Ha alltid den säkra ytan för visning i åtanke när du skapar en helskärmsversion av ett AIR for TV-program:

  • Använd hela skärmen för bakgrunder, till exempel bakgrundsbilder eller bakgrundsfärger.

  • Använd bara den säkra ytan för visning för viktiga programelement som text, grafik, video och objekt i användargränssnittet (som knappar).

Följande tabell visar dimensionerna på den säkra ytan för visning för var och en av skärmupplösningarna, med ett indrag på 7,5 %.

Skärmupplösning

Bredd och höjd på den säkra ytan för visning

Bredd på vänster och höger indrag

Bredd på övre och nedre indrag

960 x 540

816 x 460

72

40

1 280 x 720

1 088 x 612

96

54

1 920 x 1 080

1 632 x 918

144

81

Det allra bästa är emellertid att alltid beräkna den säkra ytan för visning dynamiskt. Till exempel:

var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int; 
 
horizontalInset = .075 * Capabilities.screenResolutionX; 
verticalInset = .075 * Capabilities.screenResolutionY; 
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset); 
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);

Scenens skalningsläge

Ange Stage.scaleMode som StageScaleMode.NO_SCALE och lyssna efter resize-händelser för scenen.

stage.scaleMode = StageScaleMode.NO_SCALE; 
stage.addEventListener(Event.RESIZE, layoutHandler);

Med den här inställningen blir scenens koordinater samma som pixelkoordinaterna. Tillsammans med visningsläget FULL_SCREEN_INTERACTIVE och scenjusteringen TOP_LEFT kan du med den här inställningen använda den säkra ytan för visning effektivt.

I helskärmsprogram innebär det här skalningsläget att egenskaperna stageWidth och stageHeight för klassen Stage motsvarar egenskaperna screenResolutionX och screenResolutionY för klassen Capabilities.

Dessutom behåller scenens innehåll sin definierade storlek även om programmets fönsterstorlek ändras. Ingen automatisk layout eller skalning utförs av körningsmiljön. Dessutom skickas även en resize -händelse för klassen Stage när fönsterstorleken ändras. Det betyder att du har full kontroll över hur du anpassar programmets innehåll när programmet startas och när programfönstrets storlek ändras.

Obs! Beteendet NO_SCALE är samma som i alla AIR-program. I AIR for TV-program är användningen av den här inställningen avgörande för användningen av den säkra ytan för visning.

Scenens justering

Ange Stage.align som StageAlign.TOP_LEFT :

stage.align = StageAlign.TOP_LEFT; 

Den här justeringen placerar 0,0 -koordinaten i det övre vänstra hörnet av skärmen, vilket är praktiskt för innehållsplacering med ActionScript.

Tillsammans med skalningsläget NO_SCALE och visningsläget FULL_SCREEN_INTERACTIVE kan du med den här inställningen använda den säkra ytan för visning effektivt.

Scenens visningsläge

Ange Stage.displayState i en helskärmsversion av ett AIR for TV-program som StageDisplayState.FULL_SCREEN_INTERACTIVE :

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 

Det här värdet anger att AIR-programmet ska expandera scenen till hela skärmen, med användarinmatning tillåten.

Du bör använda inställningen FULL_SCREEN_INTERACTIVE . Tillsammans med skalningsläget NO_SCALE och scenjusteringen TOP_LEFT kan du med den här inställningen använda den säkra ytan för visning effektivt.

För helskärmsprogram gör du därför följande i en hanterare för ADDED_TO_STAGE -händelsen i huvuddokumentklassen:

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; 
}

Gör sedan följande i hanteraren för RESIZE -händelsen:

  • Jämför skärmupplösningarna med scenens bredd och höjd. Om de är samma inträffade RESIZE -händelsen på grund av att scenens visningsläge ändrades till FULL_SCREEN_INTERACTIVE .

  • Beräkna och spara dimensionerna för den säkra ytan för visning och motsvarande indrag.

private function onResize(evt:Event):void 
{ 
    if ((Capabilities.screenResolutionX == stage.stageWidth) && 
        (Capabilities.screenResolutionY == stage.stageHeight)) 
    { 
         
        // Calculate and save safe viewing area dimensions. 
    } 
}

När scenens mått är lika med Capabilities.screenResolutionX och screenResolutionY , kommer AIR for TV att få maskinvaran att ge bästa tänkbara video- och grafikåtergivning.

Obs! Hur naturtroget grafik och video visas på en TV-skärm kan variera beroende på Capabilities.screenResolutionX - och screenResolutionY -värdena. Detta har att göra med på vilken enhet som AIR for TV körs. Till exempel om AIR for TV körs på en digitalbox med en upplösning på 1280 x 720 så kan den anslutna TV:n ha en skärmupplösning på 1920 x 1080. AIR for TV fungerar emellertid så att maskinvaran ger den bästa tänkbara återgivningen. I exemplet här visar maskinvaran en 1080p-video med en skärmupplösning på 1920 x 1080.

Design för flera skärmstorlekar

Du kan utveckla samma AIR for TV-program (i helskärmsversion) så att det fungerar och ser bra ut på flera AIR for TV-enheter. Gör så här:

  1. Ange egenskaperna scaleMode , align och displayState för scenen med de rekommenderade värdena: StageScaleMode.NO_SCALE , StageAlign.TOP_LEFT och StageDisplayState.FULL_SCREEN_INTERACTIVE .

  2. Skapa den säkra ytan för visning baserat på Capabilities.screenResolutionX och Capabilities.screenResolutionY .

  3. Anpassa storleken och layouten på ditt innehåll efter bredden och höjden på den säkra ytan för visning.

    Även om objekten i ditt innehåll är stora, särskilt jämfört med mobilprogram, är begrepp som dynamisk layout, relativ placering och anpassningsbart innehåll samma. Mer information om ActionScript som stöd för dessa begrepp finns i Skapa Flash-innehåll för mobiler och flera skärmstorlekar .

Scenens kvalitet

Egenskapen Stage.quality för ett AIR for TV-program är alltid StageQuality.High . Du kan inte ändra den.

Den här egenskapen anger återgivningskvaliteten för alla Stage-objekt.

Indatahantering via fjärrkontroll

Användare använder oftast ditt AIR for TV-program via en fjärrkontroll. Du bör emellertid hantera dessa indata på samma sätt som du hanterar indata från ett tangentbord till en stationär dator. Du bör särskilt tänka på att hantera händelsen KeyboardEvent.KEY_DOWN . Du hittar mer information i Samla in tangentbordsindata i Utvecklarhandbok för ActionScript 3.0 .

Knapparna på fjärrkontrollen mappar till ActionScript-konstanter. Styrknapparna på en fjärrkontroll mappas till exempel enligt följande:

Styrknapp på fjärrkontrollen

ActionScript 3.0-konstant

Upp

Keyboard.UP

Ned

Keyboard.DOWN

Vänster

Keyboard.LEFT

Höger

Keyboard.RIGHT

OK eller Välj

Keyboard.ENTER

I AIR 2.5 tillkom många andra Keyboard-konstanter för att ge stöd åt indata från fjärrkontroller. Du hittar en fullständig lista i Klassen Keyboard i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen .

För att försäkra dig om att ditt program fungerar på så många enheter som möjligt bör du tänka på följande:

  • Använd bara styrknapparna på fjärrkontrollen, om det är möjligt.

    Olika fjärrkontroller har olika knappar. De flesta har emellertid alltid dessa styrknappar.

    En fjärrkontroll till en Blu-ray-spelare har till exempel ofta inte knappar för en kanal uppåt eller en kanal nedåt. Alla fjärrkontroller har inte ens knappar för uppspelning, paus och stopp.

  • Använd knapparna för Meny och Info om programmet har behov av fler knappar än styrknapparna.

    Knapparna för Meny och Info är de näst vanligaste på fjärrkontroller.

  • Tänk till exempel på hur vanligt det är med universalfjärrkontroller.

    Även om du skapar ett program för en viss enhet bör du vara medveten om att många inte använder den fjärrkontroll som medföljer enheten. I stället använder de en universalfjärrkontroll. Dessutom programmerar användare inte alltid universalfjärrkontrollen så att knapparna matchar knapparna på enhetens fjärrkontroll. Därför är det bäst att bara använda de vanligaste knapparna.

  • Se till att användaren alltid kan komma ur en situation med hjälp av en av styrknapparna.

    Ibland kan det dock finnas en orsak till att ett program använder en av de mer ovanliga knapparna på fjärrkontrollen. Om du skapar en avslutningsmöjlighet med en av styrknapparna kommer programmet att fungera bra på alla enheter.

  • Inga pekarindata krävs såvida du inte känner till att målenheten för AIR for TV har pekarfunktionalitet.

    Trots att musindata förväntas i många datorprogram, är det inte vanligt att tv-apparater har stöd för pekarindata. Detta innebär att om du konverterar ett datorprogram för att köras på tv-apparater bör du försäkra dig om att du ändrar programmet så att inga musindata kommer att förväntas. De här ändringarna omfattar ändringar av händelsehantering och av instruktioner till användaren. När programmets startbild visas bör du till exempel inte inkludera text som ”Klicka här för att starta”.

Hantera fokus

När ett element i användargränssnittet har fokus i ett skrivbordsprogram är det målet för användarindatahändelser, som tangentbords- och mushändelser. Ett program markerar dessutom det element i användargränssnittet som har fokus. Hur du hanterar fokus i AIR for TV-program skiljer sig från hur du hanterar fokus i skrivbordsprogram eftersom:

  • I skrivbordsprogram används ofta tabbtangenten för att ändra fokus till nästa element i användargränssnittet. Tabbtangenten är inte aktuell i AIR for TV-program. Fjärrkontroller har vanligtvis ingen tabbtangent. Därför är det inte heller aktuellt att hantera fokus med egenskapen tabEnabled för ett DisplayObject, som på skrivbordet.

  • I skrivbordsprogram förväntas användaren ofta använda musen för att ge fokus åt ett visst element i användargränssnittet.

I ditt program gör du därför följande:

  • Lägg till en händelseavlyssnare, som lyssnar efter tangentbordshändelser som KeyboardEvent.KEY_DOWN , i Stage-objektet.

  • Skapa programlogik för att avgöra vilket element i användargränssnittet som ska markeras för användaren. Se till att ett element i användargränssnittet markeras när programmet startar.

  • Baserat på programlogiken skickar du den tangentbordshändelse som scenen tog emot till lämpligt elementobjekt i användargränssnittet.

    Du kan också använda Stage.focus eller Stage.assignFocus() för att ge fokus åt ett element i användargränssnittet. Du kan sedan lägga till en händelseavlyssnare i aktuellt DisplayObject så att det tar emot tangentbordshändelser.

Utformning av användargränssnittet

Skapa ett användargränssnitt för AIR for TV-program som fungerar bra på tv-apparater genom att följa de här rekommendationerna om:

  • programmets svarstider

  • programmets användbarhet

  • användarens personlighet och förväntningar

Svarstider

Använd de här tipsen för att göra ett AIR for TV-program med så bra svarstider som möjligt.

  • Gör programmets SWF-startfil så liten som möjligt.

    Läs bara in de resurser som krävs för att starta programmet i SWF-startfilen. Läs till exempel bara in programmets startbild.

    Den här rekommendationen gäller AIR-skrivbordsprogram, men är ännu viktigare på AIR for TV-enheter. AIR for TV-enheter har till exempel inte samma processorkapacitet som stationära datorer. Dessutom lagras programmet i Flash-minne på dem, vilket inte går lika fort att komma åt som hårddiskar på stationära datorer.

  • Se till att programmet körs med en bildrutefrekvens på minst 20 bildrutor per sekund.

    Utforma grafiken för att uppnå detta. Grafikåtgärdernas komplexitet kan påverka antalet bildrutor per sekund. Tips om hur du kan förbättra återgivningsprestanda finns i Optimera prestanda för Adobe Flash-plattformar .

    Obs! Grafikmaskinvaran på AIR for TV-enheter uppdaterar vanligen skärmen med en frekvens på 60 Hz eller 120 Hz (60 eller 120 gånger per sekund). Maskinvaran skannar scenen efter uppdateringar med exempelvis 30 bildrutor per sekund eller 60 bildrutor per sekund för 60 Hz- eller 120 Hz-skärmar. Om användaren upplever de här högre bildrutefrekvenserna beror däremot på komplexiteten på programmets grafikåtgärder.
  • Uppdatera skärmen inom 100–200 millisekunder efter indata från användaren.

    Användarna blir otåliga om uppdateringen tar längre tid än så, vilket ofta ger upphov till fler knapptryckningar.

Användbarhet

De som använder AIR for TV-program befinner sig i en vardagsrumsmiljö. De sitter på andra sidan rummet från teven, på ungefär tre meters avstånd. Ibland är rummet mörkt. De använder oftast en fjärrkontroll för att styra enheten. Mer än en person kan använda programmet, ibland flera stycken tillsammans och ibland efter varandra.

Därför bör du tänka på följande när du skapar ett användargränssnitt som ska vara användbart på en tv:

  • Skapa gränssnittselement som är stora.

    När du skapar text, knappar eller andra element i användargränssnittet bör du komma ihåg att användaren oftast sitter på andra sidan rummet. Se till att allt är lätt att se och läsa på exempelvis tre meters avstånd. Fall inte för frestelsen att fylla skärmen med element bara för att den är stor.

  • Använd tydlig konstrast så att innehållet är enkelt att se och läsa från andra sidan rummet.

  • Ange tydligt vilket gränssnittselement som har fokus genom att markera det.

  • Använd bara rörelse om det behövs. Det kan till exempel fungera bra att glida över från en bild till nästa för kontinuitetens skull. Men rörelser kan vara distraherande om de inte hjälper användaren att navigera eller är nödvändiga för att programmet ska fungera som tänkt.

  • Skapa alltid ett tydligt sätt för användaren att gå tillbaka i användargränssnittet.

Mer information om fjärrkontrollen finns i Indatahantering via fjärrkontroll .

Användarens personlighet och förväntningar

Tänk på att de som använder AIR for TV-program oftast är ute efter kvalitetsunderhållning på tv i en rolig och avslappnad miljö. De har inte nödvändigtvis särskilt stor kunskap om datorer eller teknik.

Därför bör du utforma AIR for TV-program med följande i åtanke:

  • Använd inte tekniska termer.

  • Undvik modala dialogrutor.

  • Använd vänliga, informella anvisningar som passar för hemmamiljön, och inte för kontorsmiljöer eller tekniska miljöer.

  • Använd grafik med den höga kvalitet som tv-tittare förväntar sig.

  • Skapa ett användargränssnitt som fungerar väl tillsammans med en fjärrkontroll. Använd inte användargrässnitt eller designelement som är mer lämpliga för program i en dator eller mobil. Användargränssnitt på datorer och mobila enheter innehåller exempelvis knappar som du ska peka eller klicka på med en mus eller ett finger.

Teckensnitt och text

Du kan använda antingen enhetsteckensnitt eller inbäddade teckensnitt i AIR for TV-program.

Enhetsteckensnitt är teckensnitt som är installerade på en enhet. Alla AIR for TV-enheter har följande enhetsteckensnitt:

Teckensnittsnamn

Beskrivning

_sans

Enhetsteckensnittet _sans är ett teckensnitt av typen sans-serif. Det _sans -enhetsteckensnitt som finns på alla AIR for TV-enheter är Myriad Pro. På grund av avståndet är vanligtvis ett sans-serif-teckensnitt bättre på en tv än ett serif-teckensnitt.

_serif

Enhetsteckensnittet _serif är ett teckensnitt av typen serif. Det _serif -enhetsteckensnitt som finns på alla AIR for TV-enheter är Minion Pro.

_typewriter

Enhetsteckensnittet _typewriter är ett teckensnitt med fast teckenbredd. Det _typewriter -enhetsteckensnitt som finns på alla AIR for TV-enheter är Courier Std.

Alla AIR for TV-enheter har dessutom följande asiatiska enhetsteckensnitt:

Teckensnittsnamn

Språk

Teckensnittskategori

lokal kod

RyoGothicPlusN-Regular

Japanska

sans

ja

RyoTextPlusN-Regular

Japanska

serif

ja

AdobeGothicStd-Light

Koreanska

sans

ko

AdobeHeitiStd-Regular

Förenklad kinesiska

sans

zh_CN

AdobeSongStd-Light

Förenklad kinesiska

serif

zh_CN

AdobeMingStd-Light

Traditionell kinesiska

serif

zh_TW och zh_HK

Dessa AIR for TV-enhetsteckensnitt:

  • Kommer från Adobe® Type Library

  • Ser bra ut på tv-apparater

  • Är utformade för videotextning

  • Är teckensnittskonturer, inte bitmappteckensnitt

Obs! Enhetstillverkare inkluderar ofta andra enhetsteckensnitt på enheter. De här tillverkarteckensnitten installeras utöver AIR for TV-enhetsteckensnitten.

Adobe har ett program som heter FontMaster Deluxe, som visar alla enhetsteckensnitt på enheten. Du kan hämta programmet på Flash Platform for TV .

Du kan också bädda in teckensnitt i AIR for TV-program. Information om inbäddade teckensnitt finns i Avancerad textåtergivning i Utvecklarhandbok för ActionScript 3.0 .

När det gäller TLF-textfält bör du tänka på följande:

  • Använd TLF-textfält för asiatisk text för att utnyttja det språkområde som programmet används i. Ange egenskapen locale för det TextLayoutFormat-objekt som är associerat med TLFTextField-objektet. Om du vill veta hur du fastställer det aktuella språkområdet läser du Välja en språkinställning i Utvecklarhandbok för ActionScript 3.0 .

  • Ange teckensnittsnamnet i egenskapen fontFamily i TextLayoutFormat-objektet om teckensnittet inte är ett AIR for TV-enhetsteckensnitt. AIR for TV använder teckensnittet om det är tillgängligt på enheten. Om det teckensnitt du begär inte finns på enheten, baserat på inställningen för locale , används lämpligt AIR for TV-enhetsteckensnitt i stället automatiskt.

  • Ange _sans , _serif eller _typewriter för egenskapen fontFamily , tillsammans med inställningen för egenskapen locale , för att få AIR for TV att välja korrekt AIR for TV-enhetsteckensnitt. Beroende på språkområdet väljer AIR for TV bland de asiatiska enhetsteckensnitten eller bland de icke-asiatiska enhetsteckensnitten. Med de här inställningarna är det enkelt att automatiskt få rätt teckensnitt för de fyra största asiatiska språkområdena och för engelska.

Obs! Om du använder klassiska textfält för asiatisk text anger du teckensnittsnamnet för ett AIR for TV-enhetsteckensnitt för att försäkra dig om att det återges korrekt. Om du vet att ett annat teckensnitt är installerat på målenheten kan du även ange det.

När det gäller programmets prestanda bör du tänka på följande:

  • Klassiska textfält har högre prestanda än TLF-textfält.

  • Ett klassiskt textfält som använder bitmappteckensnitt har allra bästa prestanda.

    Bitmappteckensnitt har en bitmapp för varje tecken, till skillnad från konturteckensnitt, som bara har konturdata för varje tecken. Både enhetsteckensnitt och inbäddade teckensnitt kan vara bitmappteckensnitt.

  • Om du anger ett enhetsteckensnitt försäkrar du dig om att enhetsteckensnittet är installerat på målenheten. Om det inte är installerat på enheten söker AIR for TV efter ett installerat teckensnitt och använder det i stället. Detta beteende påverkar emellertid programmets prestanda negativt.

  • Precis som med andra visningsobjekt anger du objektets cacheAsBitmap -egenskap som true , om TextField-objektet är huvudsakligen oföränderligt. Den här inställningen förbättrar prestanda för övergångar som toningar, glidningar och alfablandningar. Använd cacheAsBitmapMatrix för skalning och översättning. Du hittar mer information i Maskinvaruacceleration för grafik .

Filsystemsäkerhet

AIR for TV-program är AIR-program och kan därför komma åt enhetens filsystem. På ”vardagsrumsenheter” är det dock oerhört viktigt att programmet inte kan komma åt enhetens systemfiler eller filer som tillhör andra program. De som använder tv-apparater och associerade enheter förväntar sig inte – och tolererar inte – några enhetsfel. De tittar ju bara på tv.

Ett AIR for TV-program har därför en begränsad vy över enhetens filsystem. Via ActionScript 3.0 kan programmet komma åt enbart specifika kataloger (och deras underkataloger). De katalognamn du använder i ActionScript är dessutom inte de verkliga katalognamnen som används på enheten. Det här extra lagret ser till AIR for TV-program inte kommer åt lokala filer som de inte äger, vare sig det är av misstag eller av andra skäl.

Du hittar mer information i Katalogvy för AIR for TV-program .

AIR-programsandlådan

AIR for TV-program körs i AIR-programsandlådan, som beskrivs i AIR-programsandlådan .

Den enda skillnaden för AIR for TV-program är att de har begränsad tillgång till filsystemet, enligt beskrivningen i Filsystemsäkerhet .

Programmets livscykel

Till skillnad från hur det fungerar på en stationär dator kan slutanvändaren inte stänga det fönster i vilket ditt AIR for TV-program körs. Därför bör du alltid skapa en funktion för att avsluta programmet i användargränssnittet.

Vanligtvis kan slutanvändaren alltid avsluta ett program på enheten med Exit-knappen på fjärrkontrollen. AIR for TV skickar emellertid inte händelsen flash.events.Event.EXITING till programmet. Därför bör du spara programmets status ofta, så att det kan återställas till ett rimligt läge nästa gång det startas.

HTTP-cookies

AIR for TV har stöd för HTTP-beständiga cookies och sessions-cookies. I AIR for TV lagras varje cookies för AIR-program i en programspecifik katalog:

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

Cookie-filnamnet är cookies .

Obs! AIR på andra enheter, till exempel på en datorenhet, lagrar inte cookies separat för varje program. Programspecifika cookie-lager ger stöd åt programmet och systemsäkerhetsmodellen för AIR for TV.

Använd ActionScript-egenskapen URLRequest.manageCookies enligt följande:

  • Ange manageCookies som true . Detta är standardvärdet. Det betyder att AIR for TV automatiskt lägger till cookies i HTTP-begäranden och kommer ihåg cookies i HTTP-svar.

    Obs! Även om manageCookies är true kan programmet lägga till en cookie i en HTTP-begäran manuellt med hjälp av URLRequest.requestHeaders . Om den här cookie-filen har samma namn som en cookie-fil som hanteras av AIR for TV innehåller begäran två cookie-filer med samma namn. Värdena för de båda cookie-filerna kan vara olika.
  • Ange manageCookies som false . Det här värdet innebär att programmet ansvarar för att skicka cookies i HTTP-begäranden och för att komma ihåg cookies i HTTP-svar.

Du hittar mer information i URLRequest .