Aandachtspunten ontwerp AIR for TV-toepassing

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:

  • de API van de StageVideo-klasse en verwante klassen.

  • beperkingen op het gebruik van de StageVideo-klasse.

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:

  • Renderen van bitmaps

  • Schalen van bitmaps

  • Overvloeien van bitmaps

  • Rechthoeken vullen met effen kleuren

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:

  • Schuivende overgangen

  • Overgangen met schaal

  • In- en uitfaden

  • Meerdere afbeeldingen samenstellen met alfa

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:

Afbeelding op volledige grootte weergeven
Veilig gebied voor weergave voor een schermresolutie van 1920 x 1080

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:

  1. Stel de werkgebiedeigenschappen scaleMode , align en displayState respectievelijk in op de aanbevolen waarden StageScaleMode.NO_SCALE , StageAlign.TOP_LEFT en StageDisplayState.FULL_SCREEN_INTERACTIVE .

  2. Stel het veilige gebied voor weergave in op basis van Capabilities.screenResolutionX en Capabilities.screenResolutionY .

  3. 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.