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:
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:
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:
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
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:
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:
-
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
.
-
Skapa den säkra ytan för visning baserat på
Capabilities.screenResolutionX
och
Capabilities.screenResolutionY
.
-
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:
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
.
|
|
|