Aandachtspunten video
Richtlijnen voor het coderen van video
Adobe raadt de volgende coderingsrichtlijnen aan voor het streamen van video naar een tv-apparaat:
Videocodec:
|
H.264, profiel Main of High, progressief coderen
|
Resolutie:
|
720i, 720p, 1080i of 1080p
|
Framesnelheid:
|
24 of 30 frames per seconde
|
Audiocodec:
|
AAC-LC- of AC-3-, 44,1 kHz-, stereo- of de volgende multikaalsaudiocodecs: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio en DTS-HD Master Audio
|
Gecombineerde bitsnelheid:
|
maximaal 8 Mbps, afhankelijk van beschikbare bandbreedte
|
Audiobitsnelheid:
|
maximaal 192 Kbps
|
Pixelverhouding:
|
1 × 1
|
Adobe raadt u aan de H.264-codec te gebruiken voor video die wordt geleverd naar AIR for TV-apparaten.
Opmerking:
AIR for TV ondersteunt ook video die is gecodeerd met Sorenson Spark- of On2 VP6-codecs. Deze codecs worden echter niet gedecodeerd en gepresenteerd door de hardware. In plaats daarvan decodeert en presenteert de runtime deze codecs met gebruik van software, waardoor de video bij een veel lagere framesnelheid wordt afgespeeld. Gebruik daarom, indien mogelijk, H.264.
De StageVideo-klasse
AIR for TV ondersteunt hardwaredecodering en -presentatie van met H.264 gecodeerde video. Gebruik de StageVideo-klasse om deze functie in te schakelen.
Zie
De klasse StageVideo gebruiken voor presentatie met hardwareversnelling
in de
ActionScript 3.0-ontwikkelaarsgids
voor informatie over:
Teneinde bestaande AIR-toepassingen die het Video-object gebruiken voor met H.264 gecodeerde video het beste te kunnen ondersteunen, maakt AIR for TV
intern
gebruik van een StageVideo-object. Dat betekent dat voor het afspelen van video's hardwaredecodering en -presentatie wordt benut. Voor Video-objecten gelden echter dezelfde beperkingen als voor StageVideo-objecten. Als de toepassing bijvoorbeeld probeert de video te roteren, vindt er geen rotatie plaats, aangezien de video wordt gepresenteerd door de hardware, niet door de runtime.
Als u echter nieuwe toepassingen ontwikkelt, gebruikt u het StageVideo-object voor met H.264 gecodeerde video.
Zie
Video en inhoud leveren voor het Flash-platform op tv
voor een voorbeeld van het gebruik van de StageVideo-klasse.
Richtlijnen voor het leveren van video
Op AIR for TV-apparaten kan de beschikbare bandbreedte van het netwerk variëren tijdens het afspelen van video. Dit kan bijvoorbeeld gebeuren als een andere gebruiker dezelfde internetverbinding gaat gebruiken.
Daarom kan uw systeem voor het leveren van video het beste gebruikmaken van adaptieve bitsnelheidmogelijkheden. Flash Media Server ondersteunt bijvoorbeeld adaptieve bitsnelheidmogelijkheden aan de serverzijde. Aan de clientzijde kunt u het OSMF (Open Source Media Framework) gebruiken.
De volgende protocollen zijn beschikbaar voor het leveren van videoinhoud aan een AIR for TV-toepassing via het netwerk:
-
Dynamische HTTP- en HTTPS-streaming (F4F-indeling)
-
RTMP-, RTMPE-, RTMFP-, RTMPT- en RTMPTE-streaming
-
Progressieve HTTP- en HTTPS-download
Raadpleeg de volgende bronnen voor meer informatie:
Aandachtspunten audio
De ActionScript voor het afspelen van geluid is in AIR for TV-toepassingen precies hetzelfde als in andere AIR-toepassingen. Zie
Werken met geluid
in de
ActionScript 3.0-ontwikkelaarsgids
voor meer informatie.
Bedenk het volgende met betrekking tot ondersteuning voor multikanaalsaudio in AIR for TV:
-
AIR for TV biedt ondersteuning voor meerkanaalsaudio voor video's die progressief worden gedownload van een HTTP-server. Multikanaalsaudio wordt nog niet ondersteund in video's die van een Adobe Flash Media-server worden gestreamd.
-
Hoewel AIR for TV ondersteuning biedt voor vele audiocodecs, bieden niet alle AIR for TV-
apparaten
ondersteuning voor de volledige set. Controleer met de
flash.system.Capabilities
-methode
hasMultiChannelAudio()
of een AIR for TV-apparaat ondersteuning biedt voor een bepaalde multikanaalsaudiocodec, zoals AC-3.
Neem bijvoorbeeld een toepassing die een videobestand op progressieve wijze downloadt van een server. De server heeft verschillende H.264-videobestanden die ondersteuning bieden voor verschillende multikanaalsaudiocodecs. De toepassing kan met
hasMultiChannelAudio()
bepalen welk videobestand moet worden aangevraagd van de server. De toepassing kan de server ook de in
Capabilities.serverString
opgenomen tekenreeks sturen. Deze tekenreeks geeft aan welke multikanaalsaudiocodecs beschikbaar zijn, zodat de server het juiste videobestand kan selecteren.
-
Bij gebruik van een van de DTS-audiocodecs bestaan scenario's waarin
true
wordt geretourneerd door
hasMultiChannelAudio()
maar geen DTS-geluid wordt afgespeeld.
Neem bijvoorbeeld een Blu-ray-speler met een S/PDIF-uitgang, die is aangesloten op een oude versterker. DTS wordt niet ondersteund door de oude versterker, maar S/PDIF heeft geen protocol om de Blu-ray-speler te informeren. Als de Blu-ray-speler de DTS-stream naar de oude versterker verzendt, hoort de gebruiker niets. Daarom kunt u bij het gebruik van DTS het beste een gebruikersinterface verschaffen, zodat de gebruiker het kan melden als er geen geluid wordt afgespeeld. In dat geval kan uw toepassing een andere codec gebruiken.
De volgende tabel geeft aan wanneer de verschillende audiocodecs moeten worden gebruikt in AIR for TV-toepassingen. De tabel geeft ook aan wanneer AIR for TV-apparaten hardwareversnellers gebruiken voor het decoderen van een audiocodec. Hardwaredecodering verbetert de prestaties en ontlast de CPU.
Audiocodec
|
Beschikbaar op AIR for TV-apparaat
|
Hardwaredecodering
|
Wanneer moet deze audiocodec worden gebruikt?
|
Meer informatie
|
AAC
|
Altijd
|
Altijd
|
In met H.264 gecodeerde video's.
Voor audiostreaming, zoals een internetservice voor muziekstreaming.
|
Bij gebruik van een AAC-stream met alleen geluid neemt u de audiostream op in een MP4-container.
|
mp3
|
Altijd
|
Nee
|
Voor geluid in de SWF-bestanden van de toepassing.
In video's die met Sorenson Spark of On2 VP6 zijn gecodeerd.
|
H.264-video's die mp3 gebruiken voor audio worden niet afgespeeld op AIR for TV-apparaten.
|
AC-3 (Dolby Digital)
E-AC-3 (Enhanced Dolby Digital)
DTS Digital Surround
DTS Express
DTS-HD High Resolution Audio
DTS-HD Master Audio
|
Controleren
|
Ja
|
In met H.264 gecodeerde video's.
|
AIR for TV geeft doorgaans een multikanaalsaudiostream door aan een externe audio/video-ontvanger die de audio decodeert en afspeelt.
|
Speex
|
Altijd
|
Nee
|
Bij ontvangst van een live stemstream.
|
H.264-video's die Speex gebruiken voor audio worden niet afgespeeld op AIR for TV-apparaten. Gebruik Speex alleen met video's die zijn gecodeerd met Sorenson Spark of On2 VP6.
|
Nellymoser
|
Altijd
|
Nee
|
Bij ontvangst van een live stemstream.
|
H.264-video's die NellyMoser gebruiken voor audio worden niet afgespeeld op AIR for TV-apparaten. Gebruik NellyMoser alleen met video's die zijn gecodeerd met Sorenson Spark of On2 VP6.
|
Opmerking:
sommige videobestanden bevatten twee audiostreams. Een videobestand kan bijvoorbeeld zowel een AAC- als een AC3-stream bevatten. AIR for TV biedt geen ondersteuning voor dergelijke videobestanden. Het gebruik van deze bestanden kan ertoe leiden dat de video zonder geluid wordt afgespeeld.
Grafische hardwareversnelling
Grafische hardwareversnelling gebruiken
AIR for TV-apparaten verschaffen hardwareversnelling voor bewerkingen van 2D-afbeeldingen. De grafische versnellers van de hardware van het apparaat ontlasten de CPU door de volgende bewerkingen uit te voeren:
Dankzij deze grafische hardwareversnelling kunnen vele grafische bewerkingen in een AIR for TV-toepassing snel worden uitgevoerd. Het gaat hierbij bijvoorbeeld om de volgende bewerkingen:
Gebruik een van de volgende technieken om te profiteren van grafische hardwareversnelling voor dergelijke bewerkingen:
-
Stel de eigenschap
cacheAsBitmap
in op
true
voor MovieClip-objecten en andere weergaveobjecten waarvan de inhoud vrijwel ongewijzigd blijft. Voer vervolgens schuivende overgangen, in- of uitfadende overgangen en alfaovervloeiingen uit op deze objecten.
-
Gebruik de eigenschap
cacheAsBitmapMatrix
voor weergaveobjecten die u wilt schalen of omzetten (x- en y-repositionering toepassen).
Door Matrix-klassebewerkingen te gebruiken voor schalen en omzetten, voeren de hardwareversnellers van het apparaat de bewerkingen uit. Aan de andere kant zou u de afmetingen van een object waarvoor de eigenschap
cacheAsBitmap
is ingesteld op
true
kunnen wijzigen. Wanneer de afmetingen worden gewijzigd, tekent de software van de runtime de bitmap opnieuw. Opnieuw tekenen met software levert minder goede resultaten op dan schalen met hardwareversnelling aan de hand van een Matrix-bewerking.
Neem bijvoorbeeld een toepassing die een afbeelding weergeeft die groter wordt wanneer een gebruiker deze selecteert. Gebruik de Matrix-schaalbewerking dan meerdere malen om de illusie te wekken dat de afbeelding groter wordt. Afhankelijk van het formaat van de originele afbeelding en de uiteindelijke afbeelding, is de kwaliteit van de uiteindelijke afbeelding mogelijk onacceptabel. Herstel daarom de afmetingen van het weergaveobject nadat de vergrootbewerkingen zijn voltooid. Aangezien
cacheAsBitmap
is ingesteld op
true
, tekent de runtimesoftware het weergaveobject opnieuw, maar slechts één keer, en wordt een afbeelding van hoge kwaliteit gerenderd.
Opmerking:
AIR for TV-apparaten ondersteunen door hardware versneld roteren en schuintrekken doorgaans niet. Als u dus roteren en schuintrekken opgeeft in de Matrix-klasse, voert AIR for TV alle Matrix-bewerkingen uit in de software. En deze softwarebewerkingen hebben een nadelige invloed op de prestaties.
-
Gebruik de BitmapData-klasse om het in cache plaatsen van bitmaps aan te passen.
Zie het volgende voor meer informatie over bitmaps in cache plaatsen:
Het grafisch geheugen beheren
Hardwareversnellers gebruiken een speciaal grafisch geheugen om versnelde grafische bewerkingen uit te voeren. Als uw toepassing het grafische geheugen volledig in beslag neemt, gaat de toepassing trager functioneren, omdat AIR for TV dan software moet gebruiken voor de grafische bewerkingen.
Het gebruik van het grafische geheugen door uw toepassing beheren:
-
Als u klaar bent met het gebruik van een afbeelding of andere bitmapgegevens, geeft u het desbetreffende grafische geheugen vrij. Dat doet u door de methode
dispose()
van de eigenschap
bitmapData
van het bitmapobject aan te roepen. Bijvoorbeeld:
myBitmap.bitmapData.dispose();
Opmerking:
wanneer u de verwijzing naar het BitmapData-object vrijgeeft, is het grafische geheugen niet meteen beschikbaar. De opschoonfunctie van de runtime geeft het grafische geheugen na verloop van tijd vrij, maar u geeft uw toepassing meer controle door
dispose()
aan te roepen.
-
Gebruik PerfMaster Deluxe, een door Adobe verschafte AIR-toepassing, om meer inzicht te krijgen in het de grafische hardwareversnelling op uw doelapparaat. Deze toepassing toont het aantal frames per seconde voor het uitvoeren van verschillende bewerkingen. Met PerfMaster Deluxe kunt u verschillende implementaties van dezelfde bewerking vergelijken. U kunt bijvoorbeeld het verplaatsen van een bitmapafbeelding vergelijken met het verplaatsen van een vectorafbeelding. PerfMaster Deluxe is beschikbaar op
Het Flash-platform voor TV
.
Het weergaveoverzicht beheren
Als u een weergegeven object onzichtbaar wilt maken, moet u de eigenschap
visible
van het object instellen op
false
. Het object blijft op het weergaveoverzicht staan, maar het wordt niet gerenderd of weergegeven door AIR for TV. Deze techniek is handig voor objecten die voortdurend in beeld komen en uit beeld verdwijnen, omdat er slechts weinig verwerking is vereist. Wanneer u de eigenschap
visible
echter instelt op
false
, worden geen van de objectresources vrijgemaakt. Als u een object langdurig (of permanent) niet meer wilt weergeven, kunt u het object daarom het beste verwijderen van het weergaveoverzicht. Bovendien moet u alle referenties naar het object instellen op
null
. Hierdoor kunnen de resources van het object bij het opschonen worden vrijgegeven.
Het gebruik van PNG- en JPEG-afbeeldingen
PNG en JPEG zijn twee afbeeldingsindelingen die veel worden gebruikt in toepassingen. Overweeg het volgende met betrekking tot deze afbeeldingsindelingen in AIR for TV-toepassingen:
-
AIR for TV benut doorgaans hardwareversnelling voor het decoderen van JPEG-bestanden.
-
AIR for TV benut doorgaans software voor het decoderen van PNG-bestanden. PNG-bestanden worden snel gedecodeerd door software.
-
PNG is de enige bitmapindeling voor verschillende platformen die transparantie (een alfakanaal) ondersteunt.
Gebruik deze afbeeldingsindelingen daarom als volgt in uw toepassingen:
-
Gebruik JPEG-bestanden voor foto's, zodat u van door hardware versnelde decodering kunt profiteren.
-
Gebruik PNG-afbeeldingsbestanden voor interface-elementen. De elementen van de gebruikersinterface kunnen een alfa-instelling hebben en softwaredecodering is snel genoeg voor deze elementen.
Het werkgebied in AIR for TV-toepassingen
Wanneer u een AIR for TV-toepassing ontwikkelt, dient u het volgende te overwegen wanneer u met de Stage-klasse werkt:
-
Schermresolutie
-
Het veilige gebied voor weergave
-
De modus voor schaling van het werkgebied
-
De uitlijning van het werkgebied
-
De weergavestatus van het werkgebied
-
Ontwerpen voor meerdere schermformaten
-
De kwaliteitsinstelling voor het werkgebied
Schermresolutie
De meeste tv's hebben tegenwoordig een van de volgende schermresoluties: 540p, 720p of 1080p. Deze schermresoluties resulteren in de volgende waarden in de ActionScript Capabilities-klasse:
Schermresolutie
|
Capabilities.screenResolutionX
|
Capabilities.screenResolutionY
|
540p
|
960
|
540
|
720p
|
1280
|
720
|
1080p
|
1920
|
1080
|
Als u een AIR for TV-toepassing op volledig scherm ontwikkelt voor een specifiek apparaat, stelt u de waarden
Stage.stageWidth
en
Stage.stageHeight
in voor de schermresolutie van het apparaat. Als u echter een volledige-schermtoepassing ontwikkelt die kan worden uitgevoerd op meerdere apparaten, stelt u de afmetingen van het werkgebied in met de eigenschappen
Capabilities.screenResolutionX
en
Capabilities.screenResolutionY
.
Bijvoorbeeld:
stage.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;
Het veilige gebied voor weergave
Het
veilige gebied voor weergave
op een televisie is het gedeelte van het scherm dat is verschoven ten opzichte van de rand van het scherm. Dit gebied ligt zo ver bij de rand vandaan dat de gebruiker het volledige gebied kan zien, zonder dat de schuine rand van de TV een gedeelte verhult. Aangezien de door het fysieke frame rond het scherm gevormde schuine rand varieert per fabrikant, kan de benodigde inzet ook variëren. Het veilige gebied voor weergave probeert een gebied op het scherm te garanderen dat altijd zichtbaar is. Dit veilige gebied wordt ook wel het
veilige gebied voor titels
genoemd.
Overscan
verwijst naar het gedeelte van het scherm dat niet zichtbaar is, omdat het zich achter de schuine rand bevindt.
Adobe raadt een inzet van 7,5% aan voor elke rand van het scherm. Bijvoorbeeld:
Denk altijd aan het veilige gebied voor weergave wanneer u een AIR for TV-toepassing voor een volledig scherm ontwikkelt:
-
Gebruik het volledige scherm voor achtergronden, zoals achtergrondafbeeldingen of -kleuren.
-
Gebruik alleen het veilige gebied voor weergave voor belangrijke toepassingselementen, zoals tekst, afbeeldingen, video en interface-elementen, zoals knoppen.
De volgende tabel toont de afmetingen van het veilige gebied voor weergave voor alle standaardschermresoluties, bij gebruik van een inzet van 7,5%.
Schermresolutie
|
Breedte en hoogte van veilig gebied voor weergave
|
Breedte inzet aan linker- en rechterkant
|
Hoogte inzet aan boven- en onderkant
|
960 x 540
|
816 x 460
|
72
|
40
|
1280 x 720
|
1088 x 612
|
96
|
54
|
1920 x 1080
|
1632 x 918
|
144
|
81
|
Het is echter altijd het beste het veilige gebied voor weergave op dynamische wijze te berekenen. Bijvoorbeeld:
var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int;
horizontalInset = .075 * Capabilities.screenResolutionX;
verticalInset = .075 * Capabilities.screenResolutionY;
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset);
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);
Modus voor schalen van het werkgebied
Stel
Stage.scaleMode
in op
StageScaleMode.NO_SCALE
en luister naar gebeurtenissen voor het vergroten of verkleinen van het werkgebied.
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, layoutHandler);
Met deze instelling worden werkgebiedcoördinaten gelijk aan pixelcoördinaten. Deze instelling zorgt er samen met de weergavestatus
FULL_SCREEN_INTERACTIVE
en de werkgebieduitlijning
TOP_LEFT
voor dat u het veilige gebied voor weergave op effectieve wijze kunt gebruiken.
In het bijzonder betekent deze schaalmodus voor een volledig scherm ook dat de eigenschappen
stageWidth
en
stageHeight
van de Stage-klasse overeenkomen met de eigenschappen
screenResolutionX
en
screenResolutionY
van de Capabilities-klasse.
Bovendien behoudt de inhoud van het werkgebied de gedefinieerde grootte wanneer het toepassingsvenster wordt vergroot of verkleind. De runtime voert geen automatische schaling of lay-out uit. De runtime verzendt bovendien de gebeurtenis
resize
van de Stage-klasse wanneer het vensterformaat verandert. U hebt dus volledige controle over de manier waarop de inhoud van de toepassing wordt aangepast wanneer de toepassing wordt gestart en wanneer het formaat van het toepassingsvenster wordt veranderd.
Opmerking:
het gedrag van
NO_SCALE
is precies hetzelfde als in alle andere AIR-toepassingen. In AIR for TV-toepassingen is het gebruik van deze instelling echter van essentieel belang voor het gebruik van het veilige gebied voor weergave.
Uitlijning van het werkgebied
Stel
Stage.align
in op
StageAlign.TOP_LEFT
:
stage.align = StageAlign.TOP_LEFT;
Deze uitlijning plaatst de coördinaat
0,0
linksboven in het scherm, wat handig is voor het plaatsen van inhoud met ActionScript.
Samen met de schaalmodus
NO_SCALE
en de weergavestatus
FULL_SCREEN_INTERACTIVE
stelt deze instelling u in staat effectief gebruik te maken van het veilige gebied voor weergave.
Weergavestatus van het werkgebied
Stel
Stage.displayState
in AIR for TV-toepassingen op volledig scherm in op
StageDisplayState.FULL_SCREEN_INTERACTIVE
:
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
Met deze waarde wordt de AIR-toepassing zo ingesteld dat het werkgebied op het volledige scherm wordt weergegeven, waarbij gebruikersinvoer is toegestaan.
U wordt aangeraden de instelling
FULL_SCREEN_INTERACTIVE
te gebruiken. Samen met de schaalmodus
NO_SCALE
en de werkgebieduitlijning
TOP_LEFT
stelt deze instelling u in staat effectief gebruik te maken van het veilige gebied voor weergave.
Ga daarom als volgt te werk in een handler voor de
ADDED_TO_STAGE
-gebeurtenis van de hoofddocumentklasse voor toepassingen met een volledig scherm:
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;
}
Vervolgens doet u het volgende in de handler voor de
RESIZE
-gebeurtenis:
-
Vergelijk de schermresolutie met de breedte en hoogte van het werkgebied. Als deze gelijk zijn, heeft de gebeurtenis
RESIZE
plaatsgevonden, omdat de weergavestatus van het werkgebied is veranderd in
FULL_SCREEN_INTERACTIVE
.
-
Bereken de afmetingen van het veilige gebied voor weergave en de bijbehorende inzet en sla deze op.
private function onResize(evt:Event):void
{
if ((Capabilities.screenResolutionX == stage.stageWidth) &&
(Capabilities.screenResolutionY == stage.stageHeight))
{
// Calculate and save safe viewing area dimensions.
}
}
Wanneer de afmetingen van de stage gelijk zijn aan
Capabilities.screenResolutionX
en
screenResolutionY
, zorgt AIR for TV voor dat uw video en afbeeldingen optimaal worden weergeven door de hardware.
Opmerking:
de weergavekwaliteit van uw afbeeldingen en video-opnamen op de tv is niet altijd gelijk aan de waarden van
Capabilities.screenResolutionX
en
screenResolutionY
. Deze waarden zijn namelijk afhankelijk van het apparaat waarop AIR for TV wordt uitgevoerd. Zo kan de schermresolutie van een set-top box met AIR for TV bijvoorbeeld 1280 x 720 zijn, terwijl de aangesloten tv een schermresolutie van 1920 x 1080 heeft. Desondanks zorgt AIR for TV voor een optimale weergavekwaliteit. In dit voorbeeld wordt daarom een 1080p-video weergegeven met een schermresolutie van 1920 x 1080.
Ontwerpen voor meerdere schermformaten
U kunt één AIR for TV-toepassing voor een volledig scherm ontwerpen die naar behoren functioneert en er goed uitziet op verschillende AIR for TV-apparaten. Ga als volgt te werk:
-
Stel de werkgebiedeigenschappen
scaleMode
,
align
en
displayState
respectievelijk in op de aanbevolen waarden
StageScaleMode.NO_SCALE
,
StageAlign.TOP_LEFT
en
StageDisplayState.FULL_SCREEN_INTERACTIVE
.
-
Stel het veilige gebied voor weergave in op basis van
Capabilities.screenResolutionX
en
Capabilities.screenResolutionY
.
-
Pas de grootte en lay-out van uw inhoud aan op basis van de breedte en hoogte van het veilige gebied voor weergave.
Hoewel de inhoudobjecten groot zijn, vooral in vergelijking met toepassingen voor mobiele apparaten, zijn concepten als dynamische lay-out, relatieve positionering en adaptieve inhoud precies hetzelfde. Zie
Mobiele Flash-inhoud ontwerpen voor schermen van verschillend formaat
voor meer informatie over de ondersteuning van ActionScript voor deze concepten.
De kwaliteit van het werkgebied
De eigenschap
Stage.quality
voor een AIR for TV-toepassing is altijd ingesteld op
StageQuality.High
. U kunt deze instelling niet wijzigen.
Deze eigenschap bepaalt de renderkwaliteit van alle werkgebiedobjecten.
Invoer van een afstandsbediening verwerken
Gebruikers communiceren doorgaans via een afstandsbediening met uw AIR for TV-toepassing. Verwerk toetsinvoer echter op precies dezelfde manier als toetsinvoer via een toetsenbord van een bureaubladtoepassing. Verwerk in het bijzonder de gebeurtenis
KeyboardEvent.KEY_DOWN
. Zie
Toetsenbordinvoer vastleggen
in de
ActionScript 3.0-ontwikkelaarsgids
voor meer informatie.
De toetsen op de afstandsbediening zijn toegewezen aan ActionScript-constanten. De toetsen op het blok met richtingtoetsen op een afstandsbediening zijn bijvoorbeeld als volgt toegewezen:
Toets op richtingtoetsenblok afstandsbediening
|
ActionScript 3.0-constante
|
Omhoog
|
Keyboard.UP
|
Omlaag
|
Keyboard.DOWN
|
Links
|
Keyboard.LEFT
|
Rechts
|
Keyboard.RIGHT
|
OK of selecteren
|
Keyboard.ENTER
|
AIR 2.5 heeft vele andere toetsenbordconstanten toegevoegd ter ondersteuning van invoer via een afstandsbediening. Zie
Keyboard-klasse
in de
Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform
voor een volledige lijst.
Houd u aan de volgende aanbevelingen, zodat uw toepassing op zoveel mogelijk verschillende apparaten werkt:
-
Gebruik, waar mogelijk, alleen de toetsen op het blok met richtingtoetsen.
Verschillende afstandsbedieningen hebben verschillende toetsen. Maar de meeste afstandsbedieningen hebben een blok met richtingtoetsen.
Een afstandsbediening voor een Blu-ray-speler beschikt doorgaans bijvoorbeeld niet over een toets om naar de volgende of vorige zender te gaan. En ook niet elke afstandsbediening heeft een knop voor afspelen, pauzeren en stoppen.
-
Gebruik de toetsen Menu en Info als de toepassing naast de richtingtoetsen nog andere toetsen nodig heeft.
De toetsen Menu en Info zijn op de richtingtoetsen na de meest voorkomende toetsen op afstandsbedieningen.
-
Overweeg hoe vaak universele afstandsbedieningen worden gebruikt.
Zelfs als u een toepassing voor een bepaald apparaat ontwikkelt, dient u erbij stil te staan dat veel gebruikers niet de bij het apparaat geleverde afstandsbediening, maar een universele afstandsbediening gebruiken. Gebruikers programmeren hun universele afstandsbediening bovendien niet altijd zodanig dat er een overeenkomst is voor alle toetsen op de afstandsbediening van het apparaat. Het is daarom beter alleen de meest gebruikelijke toetsen te gebruiken.
-
Zorg ervoor dat de gebruiker een situatie altijd kan sluiten met een van de richtingtoetsen.
Soms kan er een dringende reden zijn waarom uw toepassing een andere toets dan de meest gebruikelijke toetsen op een afstandsbediening moet gebruiken. De mogelijkheid een situatie te kunnen sluiten met een van de richtingtoetsen maakt uw toepassing gebruiksvriendelijker op alle mogelijke apparaten.
-
Stel aanwijzerinvoer niet verplicht, tenzij u weet dat het AIR for TV-doelapparaat over functionaliteit voor aanwijzerinvoer beschikt.
Veel bureaubladtoepassingen verwachten muisinvoer, maar de meeste tv's ondersteunen dergelijke invoer niet. Als u dus bureaubladtoepassingen aanpast voor gebruik op een televisie, dient u muisinvoer uit te schakelen. Deze aanpassingen betreffen onder andere het afhandelen van gebeurtenissen en wijzigingen in instructies voor de gebruiker. Zorg er bijvoorbeeld voor dat het opstartscherm van een toepassing niet de tekst ''Klik hier'' bevat.
Focus beheren
Wanneer een interface-element in een bureaubladtoepassing de focus krijgt, is het het doel van gebruikersinvoergebeurtenissen, zoals toetsenbord- en muisgebeurtenissen. Bovendien markeert een toepassing het interface-element dat de focus heeft. Het beheren van de focus in een AIR for TV-toepassing is niet hetzelfde als het beheren van de focus in een bureaubladtoepassing omdat:
-
Bureaubladtoepassingen vaak de Tab-toets gebruiken om de focus naar het volgende interface-element te verplaatsen. Het gebruik van de Tab-toets is niet van toepassing op AIR for TV-toepassingen. Afstandsbedieningen hebben doorgaans geen Tab-toets. Het beheren van de focus aan de hand van de eigenschap
tabEnabled
van een DisplayObject zoals op het bureaublad functioneert dus niet.
-
Bureaubladtoepassingen vaak verwachten dat de gebruiker de muis gebruikt om de focus op een interface-element te plaatsen.
Ga daarom in uw toepassing als volgt te werk:
-
Voeg een gebeurtenislistener toe aan het werkgebied die luistert naar toetsenbordgebeurtenissen zoals
KeyboardEvent.KEY_DOWN
.
-
Voorzie in toepassingslogica om te bepalen welk interface-element wordt gemarkeerd voor de eindgebruiker. Zorg ook dat er een interface-element is gemarkeerd wanneer de toepassing wordt gestart.
-
Verzend op basis van uw toepassingslogica de Keyboard-gebeurtenis die is ontvangen door het werkgebied naar het desbetreffende interface-elementobject.
U kunt ook
Stage.focus
of
Stage.assignFocus()
gebruiken om de focus toe te wijzen aan een gebruikersinterface-element. U kunt vervolgens een gebeurtenislistener toevoegen aan dat DisplayObject, zodat dit toetsenbordgebeurtenissen ontvangt.
Ontwerp gebruikersinterface
Zorg voor een gebruiksvriendelijke gebruikersinterface van AIR for TV-toepassingen op televisies door u te houden aan de volgende aanbevelingen op gebied van:
-
het reactievermogen van de toepassing
-
de bruikbaarheid van de toepassing
-
de persoonlijkheid en verwachtingen van gebruiker
Reactievermogen
Benut de volgende tips om een AIR for TV-toepassing zo goed mogelijk te laten reageren.
-
Maak het aanvankelijke SWF-bestand van de toepassing zo klein mogelijk.
Laad in het aanvankelijke SWF-bestand alleen de bronnen die nodig zijn om de toepassing te starten. Laad bijvoorbeeld alleen de afbeelding voor het opstartscherm van de toepassing.
Deze aanbeveling geldt ook voor AIR-bureaubladtoepassingen, maar is van groter belang voor AIR for TV-apparaten. AIR for TV-apparaten beschikken bijvoorbeeld niet over hetzelfde verwerkingsvermogen als bureaubladcomputers. Bovendien slaan deze apparaten de toepassing op in het Flash-geheugen, wat minder snel te benaderen is dan vaste schijven op bureaubladcomputers.
-
Zorg dat de toepassing bij een framesnelheid van minstens 20 frames per seconde wordt uitgevoerd.
Ontwerp uw afbeeldingen met dit idee in uw achterhoofd. De complexiteit van grafische bewerkingen kan het aantal frames per seconde beïnvloeden. Zie
De prestaties voor het Adobe Flash-platform optimaliseren
voor tips over het verbeteren van de renderprestaties.
Opmerking:
de grafische hardware op AIR for TV-apparaten werkt het scherm doorgaans bij met een snelheid van 60 of 120 Hz (60 of 120 keer per seconde). De hardware scant het werkgebied bijvoorbeeld op updates met een snelheid van 30 of 60 frames per seconde voor weergave op een 60 of 120 Hz-scherm. Het hangt echter af van de complexiteit van de grafische bewerkingen van de toepassing of de gebruiker deze hogere framesnelheden ook ervaart.
-
Werk het scherm bij binnen 100 tot 200 milliseconden van de gebruikersinvoer.
Gebruikers worden ongeduldig als het langer duurt en gaan dan vaak meer toetsen indrukken.
Bruikbaarheid
Gebruikers van AIR for TV-toepassingen bevinden zich vaak in een woonkamer en zitten meestal op zo'n drie meter afstand van de tv. Soms is het ook nog donker in de kamer. Meestal gebruiken ze een afstandsbediening voor invoer. Het is mogelijk dat meerdere personen de toepassing gebruiken, soms tegelijk, soms na elkaar.
Ontwerp uw gebruikersinterface daarom met oog op de volgende tv-bruikbaarheidsoverwegingen:
-
Ontwerp grote elementen voor de gebruikersinterface.
Bedenk bij het ontwerpen van tekst, knoppen of andere interface-elementen dat de gebruiker aan de andere kant van de kamer zit. Zorg er dus voor dat alles gemakkelijk zicht- en leesbaar is op een afstand van bijvoorbeeld drie meter. Ook al is het scherm groot, zorg dat het niet te vol raakt.
-
Gebruik een goed contrast, zodat de inhoud ook vanaf de andere kant van de kamer duidelijk zicht- en leesbaar is.
-
Zorg dat het interface-element dat de focus heeft in het oog springt door het een felle kleur te geven.
-
Gebruik beweging alleen als het nodig is. Het van het ene scherm naar het andere schuiven om verder te gaan, kan bijvoorbeeld goed werken. Beweging kan echter ook afleiden als het de gebruiker niet helpt bij het navigeren of als het niets bijdraagt aan de toepassing.
-
Zorg altijd dat de gebruiker op een gemakkelijke manier terug kan navigeren door de gebruikersinterface.
Zie
Invoer van een afstandsbediening verwerken
voor meer informatie over het gebruik van de afstandsbediening.
De persoonlijkheid en verwachtingen van gebruikers
Bedenk dat gebruikers van AIR for TV-toepassingen doorgaans entertainment van tv-kwaliteit verwachten in een leuke, ontspannen omgeving. Ze zijn lang niet altijd deskundig op gebied van computers of technologie.
Ontwerp daarom AIR for TV-toepassingen met de volgende kenmerken:
-
Gebruik geen technische termen.
-
Gebruik geen modale dialoogvensters.
-
Gebruik vriendelijke, informele instructies die geschikt zijn voor een woonkameromgeving, niet voor een professionele of technische omgeving.
-
Gebruik afbeeldingen van de hoge kwaliteit die tv-kijkers verwachten.
-
Maak een gebruikersinterface die geschikt is voor een afstandsbediening. Gebruik geen gebruikersinterface- of ontwerpelementen die beter bij toepassingen voor mobiele apparatuur of desktops passen. Zo bevatten gebruikersinterfaces op desktops en mobiele apparatuur vaak knoppen voor aanwijzen en klikken met een muis of vinger.
Lettertypen en tekst
U kunt de apparaatlettertypen gebruiken of de ingesloten lettertypen van uw AIR for TV-toepassing.
Apparaatlettertypen zijn de op een apparaat geïnstalleerde lettertypen. Alle AIR for TV-apparaten beschikken over de volgende apparaatlettertypen:
Lettertypenaam
|
Beschrijving
|
_sans
|
Het apparaatlettertype
_sans
is een sans-serif-lettertype. Het
_sans
-apparaatlettertype Myriad Pro is geïnstalleerd op alle AIR for TV-apparaten. Vanwege de kijkafstand zien sans-serif-lettertypen er op televisies meestal beter uit dan serif-lettertypen.
|
_serif
|
Het apparaatlettertype
_sans
is een serif-lettertype. Minion Pro is het
_serif
-apparaatlettertype dat is geïnstalleerd op alle AIR for TV-apparaten.
|
_typewriter
|
Het apparaatlettertype
_typewriter
is een lettertype met vaste spatiëring. Courier Std. is het
_typewriter
-apparaatlettertype dat is geïnstalleerd op alle AIR for TV-apparaten.
|
Alle AIR for TV-apparaten beschikken ook over de volgende Aziatische apparaatlettertypen:
Lettertypenaam
|
Taal
|
Lettertypecategorie
|
lokale code
|
RyoGothicPlusN-Regular
|
Japans
|
sans
|
ja
|
RyoTextPlusN-Regular
|
Japans
|
serif
|
ja
|
AdobeGothicStd-Light
|
Koreaans
|
sans
|
ko
|
AdobeHeitiStd-Regular
|
Vereenvoudigd Chinees
|
sans
|
zh_CN
|
AdobeSongStd-Light
|
Vereenvoudigd Chinees
|
serif
|
zh_CN
|
AdobeMingStd-Light
|
Traditioneel Chinees
|
serif
|
zh_TW en zh_HK
|
Deze AIR for TV-apparaatlettertypen:
-
Zijn afkomstig uit de Adobe® Type-bibliotheek
-
Zien er goed uit op een tv-scherm
-
Zijn ontworpen voor videotitels
-
Zijn lettertypecontouren, geen bitmaplettertypen
Opmerking:
apparaatproducenten installeren vaak andere apparaatlettertypen op het apparaat. Deze door de producent verschafte apparaatlettertypen worden in aanvulling op de AIR for TV-apparaatlettertypen geïnstalleerd.
Adobe levert de toepassing FontMaster Deluxe die alle apparaatlettertypen op het apparaat weergeeft. De toepassing is verkrijgbaar op
Flash Platform voor tv
.
U kunt lettertypen ook insluiten in uw AIR for TV-toepassing. Zie
Geavanceerde tekstrendering
in de
ActionScript 3.0-ontwikkelaarsgids
.
Adobe raadt het volgende aan met betrekking tot het gebruik van TLF-tekstvelden:
-
Gebruik TLF-tekstvelden voor Aziatische tekst om de landinstellingen waarin de toepassing wordt uitgevoerd te benutten. Stel de eigenschap
locale
van het aan het TLFTextField-object gekoppelde TextLayoutFormat-object in. In
Landinstellingen kiezen
in de
ActionScript 3.0-ontwikkelaarsgids
wordt uitgelegd hoe u de huidige landinstellingen kunt bepalen.
-
Geef de naam van het lettertype op in de eigenschap
fontFamily
van het TextLayoutFormat-object als het lettertype niet een van de AIR for TV-apparaatlettertypen is. AIR for TV gebruikt dat lettertype als het beschikbaar is op het apparaat. Als het gewenste lettertype niet op het apparaat aanwezig is, gebruikt AIR for TV in plaats daarvan het overeenkomende AIR for TV-apparaatlettertype op basis van de
locale
-instelling.
-
Geef
_sans
,
_serif
of
_typewriter
op voor de eigenschap
fontFamily
en stel de eigenschap
locale
in, zodat AIR for TV het juiste AIR for TV-apparaatlettertype kan kiezen. AIR for TV maakt afhankelijk van de landinstellingen een keuze uit de set Aziatische apparaatlettertypen of uit de set niet-Aziatische apparaatlettertypen. Dankzij deze instellingen wordt op eenvoudige wijze automatisch het juiste lettertype gebruikt voor Engels en de vier belangrijkste Aziatische talen.
Opmerking:
als u klassieke tekstvelden gebruikt voor Aziatische tekst, geeft u de naam op van een AIR for TV-apparaatlettertype om zeker te zijn van correcte rendering. U kunt ook een ander lettertype opgeven als u zeker weet dat dit op het doelapparaat is geïnstalleerd.
Bedenk het volgende met betrekking tot de prestaties van de toepassing:
-
Klassieke tekstvelden leveren snellere prestaties op dan TLF-tekstvelden.
-
Een klassiek tekstveld dat gebruikmaakt van bitmaplettertypen resulteert in de snelste prestaties.
Bitmaplettertypen verschaffen een bitmap voor elk teken, in tegenstelling tot contourlettertypen die slechts de contourgegevens voor elk teken verschaffen. Zowel apparaatlettertypen als ingesloten lettertypen kunnen bitmaplettertypen zijn.
-
Als u een apparaatlettertype opgeeft, dient u ervoor te zorgen dat dit lettertype is geïnstalleerd op uw doelapparaat. Als dat niet het geval is, zoekt en gebruikt AIR for TV een ander lettertype dat op het apparaat is geïnstalleerd. Dit vertraagt de toepassing echter.
-
Als een TextField-object veelal ongewijzigd blijft, stelt u de eigenschap
cacheAsBitmap
van dit object, net als voor alle andere weergaveobjecten, in op
true
. Zo verbetert u de prestaties van overgangen met in- of uitfaden, schuiven en alfa-overvloeien. Gebruik
cacheAsBitmapMatrix
voor schalen en omzetten. Zie
Grafische hardwareversnelling
voor meer informatie.
Beveiliging bestandssysteem
AIR for TV-toepassingen zijn AIR-toepassingen en hebben dus toegang tot het bestandssysteem van het apparaat. Op een 'huiskamerapparaat' is het echter van essentieel belang dat een toepassing geen toegang heeft tot de systeembestanden van het apparaat of tot de bestanden van andere toepassingen. Gebruikers van tv's en verwante apparatuur verwachten en tolereren geen apparaatfouten, ze kijken immers gewoon tv.
Daarom heeft een AIR for TV-toepassing slechts beperkt inzicht in het bestandssysteem van het apparaat. Uw toepassing heeft via ActionScript 3.0 slechts toegang tot specifieke mappen (en de bijbehorende submappen). Bovendien komen de mapnamen die u in ActionScript gebruikt niet overeen met de feitelijke mapnamen op het apparaat. Deze extra laag voorkomt dat AIR for TV-toepassingen per ongeluk of met kwade bedoelingen lokale bestanden openen die niet van hen zijn.
Zie
Mapweergave voor AIR for TV-toepassingen
voor meer informatie.
De sandbox van AIR-toepassingen
AIR for TV-toepassingen worden uitgevoerd in de AIR-toepassingssandbox, zoals wordt uitgelegd in
De AIR-toepassingssandbox
.
Hen enige verschil is dat AIR for TV-toepassingen slechts beperkte toegang hebben tot het bestandssysteem, zoals beschreven in
Beveiliging bestandssysteem
.
Gebruiksduur van de toepassing
In tegenstelling tot een bureaubladomgeving kan de eindgebruiker het venster waarin uw AIR for TV-toepassing wordt uitgevoerd niet sluiten. Daarom dient u de gebruiker een interfacemechanisme te verschaffen waarmee hij of zij de toepassing kan sluiten.
Op de meeste apparaten kunnen eindgebruikers een toepassing onvoorwaardelijk sluiten met de afsluittoets op de afstandsbediening. AIR for TV verzendt de gebeurtenis
flash.events.Event.EXITING
echter niet naar de toepassing. Sla de toepassingsstatus daarom regelmatig op, zodat automatisch een redelijke status van de toepassing wordt hersteld wanneer deze opnieuw wordt gestart.
HTTP-cookies
AIR for TV biedt ondersteuning voor permanente HTTP-cookies en sessiecookies. AIR for TV slaat de cookies van elke AIR-toepassing op in een toepassingsspecifieke map:
/app-storage/<app id>/Local Store
Het cookiebestand heeft de naam
cookies
.
Opmerking:
op andere apparaten, zoals bureaubladapparatuur, slaat AIR cookies niet afzonderlijk voor elke toepassing op. Toepassingsspecifieke opslag van cookies ondersteunt het toepassings- en systeembeveiligingsmodel van AIR for TV.
Gebruik de ActionScript-eigenschap
URLRequest.manageCookies
als volgt:
-
Stel
manageCookies
in op
true
. Dit is de standaardinstelling, waarbij AIR for TV automatisch cookies toevoegt aan HTTP-aanvragen en de cookies in de HTTP-respons onthoudt.
Opmerking:
ook als
manageCookies
true
is, kan de toepassing met gebruik van
URLRequest.requestHeaders
handmatig een cookie toevoegen aan een HTTP-aanvraag. Als deze cookie dezelfde naam heeft als een cookie die AIR for TV beheert, bevat de aanvraag twee cookies met dezelfde naam. De waarden van de twee cookies kunnen verschillend zijn.
-
Stel
manageCookies
in op
false
. Deze waarde geeft aan dat de toepassing verantwoordelijk is voor het verzenden van cookies in HTTP-aanvragen en voor het onthouden van de cookies in de HTTP-respons.
Zie
URLRequest
voor meer informatie.
|
|
|