Considerazioni per il video
Linee guida per la codifica video
Per lo streaming video su dispositivi TV, Adobe consiglia le seguenti linee guida per la codifica:
Codec video:
|
H.264, profilo Main o High, codifica progressiva
|
Risoluzione:
|
720i, 720p, 1080i o 1080p
|
Frequenza fotogrammi:
|
24 fotogrammi al secondo oppure 30 fotogrammi al secondo
|
Codec audio:
|
AAC-LC o AC-3, 44.1 kHz, stereo, o questi codec per audio multicanale: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio, DTS-HD Master Audio
|
Velocità di trasmissione combinata:
|
fino a 8M bps a seconda dell'ampiezza di banda disponibile
|
Velocità di trasmissione audio:
|
fino a 192 Kbps
|
Forma dei pixel:
|
1 × 1
|
Adobe consiglia di utilizzare il codec H.264 per la distribuzione di video a dispositivi AIR per TV.
Nota:
AIR per TV supporta anche il video codificato con i codec Sorenson Spark e On2 VP6. Tuttavia, l'hardware non esegue la decodifica e la presentazione per questi codec, che invece vengono eseguite dal runtime utilizzando il software, con l'effetto di riprodurre il video con una frequenza di fotogrammi molto inferiore. Di conseguenza, usate il codec H.264 se possibile.
La classe StageVideo
AIR per TV supporta la decodifica e la presentazione hardware dei video con codifica H.264. Utilizzate la classe StageVideo per abilitare questa funzionalità.
Vedete Uso della classe StageVideo per la presentazione con accelerazione hardware nella
Guida per gli sviluppatori di ActionScript 3.0
per informazioni dettagliate su:
Per supportare in modo ottimale le applicazioni AIR esistenti che utilizzano l'oggetto Video per i video con codifica H.264, AIR per TV usa
internamente
un oggetto StageVideo. In questo modo la riproduzione video sfrutta i benefici della decodifica e della presentazione hardware. Tuttavia, l'oggetto Video è sottoposto alle stesse restrizioni che valgono per un oggetto StageVideo. Ad esempio, se l'applicazione tenta di ruotare il video, la rotazione non avviene, poiché è l'hardware, e non il runtime, che esegue la presentazione del video.
Quando invece scrivete nuove applicazioni, usate l'oggetto StageVideo per i video con codifica H.264.
Per un esempio di utilizzo della classe StageVideo, vedete l'articolo
Delivering video and content for the Flash Platform on TV
.
Linee guida per la distribuzione video
Su un dispositivo AIR per TV, l'ampiezza di banda disponibile della rete può variare durante la riproduzione video. Le variazioni possono verificarsi, ad esempio, quando un altro utente utilizza la stessa connessione Internet.
Di conseguenza, Adobe consiglia di distribuire i video utilizzando velocità di trasferimento adattive. Ad esempio, sul lato server, Flash Media Server supporta tale funzionalità. Sul lato client, potete utilizzare il framework OSMF (Open Source Media Framework).
I protocolli seguenti sono disponibili per la distribuzione di contenuto video a un'applicazione AIR per TV tramite la rete:
-
Streaming dinamico HTTP e HTTPS (formato F4F)
-
Streaming RTMP, RTMPE, RTMFP, RTMPT e RTMPTE
-
Download progressivo HTTP e HTTPS
Per ulteriori informazioni, consultare i seguenti riferimenti:
Considerazioni per l'audio
Il codice ActionScript per la riproduzione sonora non è differente nelle applicazioni AIR per TV rispetto ad altri tipi di applicazioni AIR. Per informazioni, vedete
Operazioni con l'audio
nella
Guida per gli sviluppatori di ActionScript 3.0
.
Relativamente al supporto dell'audio multicanale in AIR per TV, considerate quanto segue:
-
AIR per TV supporta l'audio multicanale per i video scaricati con download progressivo da un server HTTP. l supporto dell'audio multicanale nei video scaricati in streaming da un server Adobe Flash Media non è ancora disponibile.
-
Anche se AIR per TV supporta numerosi codec audio, non tutti i
dispositivi
AIR per TV supportano l'intera serie. Utilizzate il
flash.system.Capabilities
metodo
hasMultiChannelAudio()
per verificare se un dispositivo AIR per TV supporta un particolare codec audio multicanale, quale AC-3.
Ad esempio, considerate un'applicazione che scarica progressivamente un file video da un server. Il server presenta diversi file video H.264 che supportano diversi codec audio multicanale. L'applicazione può utilizzare
hasMultiChannelAudio()
per determinare quale file video richiedere dal server. In alternativa, l'applicazione può inviare al server la stringa contenuta in
Capabilities.serverString
. Tale stringa indica quali codec audio multicanale sono disponibili, consentendo al server di selezionare il file video appropriato.
-
Quando utilizzate uno dei codec audio DTS, in alcuni scenari
hasMultiChannelAudio()
restituisce
true
, ma l'audio DTS non viene riprodotto.
Considerate, ad esempio, un lettore Blu-ray con un output S/PDIF, collegato a un vecchio amplificatore. Il vecchio amplificatore non supporta DTS, ma S/PDIF non dispone di un protocollo per notificarlo al lettore Blu-ray. Il lettore Blu-ray invia il flusso DTS al vecchio amplificatore, ma non viene emesso alcun suono. Di conseguenza, quando utilizzate DTS, è buona norma fornire un'interfaccia utente in modo che l'utente possa indicare se non viene riprodotto alcun suono. L'applicazione potrà quindi ripristinare un codec diverso.
La tabella seguente indica quando utilizzare codec audio differenti nelle applicazioni AIR per TV. La tabella indica inoltre quando il dispositivi AIR per TV impiegano acceleratori hardware per decodificare un codec audio. La decodifica hardware migliora le prestazioni e alleggerisce la CPU.
Codec audio
|
Disponibilità su dispositivi AIR per TV
|
Decodifica hardware
|
Quando usare questo codec audio
|
Ulteriori informazioni
|
AAC
|
Sempre
|
Sempre
|
Nei video con codifica H.264.
Per lo streaming audio, ad esempio nell'ambito di un servizio di streaming musicale su Internet.
|
Quando utilizzate un flusso AAC solo audio, incapsulatelo in un contenitore MP4.
|
MP3
|
Sempre
|
No
|
Per i suoni nei file SWF dell'applicazione.
Nei video con codifica Sorenson Spark o On2 VP6.
|
Un video H.264 che usa il formato mp3 per l'audio non viene riprodotto sui dispositivi AIR per TV.
|
AC-3 (Dolby Digital)
E-AC-3 (Enhanced Dolby Digital)
DTS Digital Surround
DTS Express
Audio DTS-HD High Resolution
Audio DTS-HD Master
|
Controllare
|
Sì
|
Nei video con codifica H.264.
|
Generalmente, AIR per TV trasmette un flusso audio multicanale a un ricevitore audio/video esterno che decodifica e riproduce l'audio.
|
Speex
|
Sempre
|
No
|
Ricezione di un flusso vocale dal vivo.
|
Un video H.264 che usa Speex per l'audio non viene riprodotto sui dispositivi AIR per TV. Utilizzate Speex solo nei video con codifica Sorenson Spark o On2 VP6.
|
NellyMoser
|
Sempre
|
No
|
Ricezione di un flusso vocale dal vivo.
|
Un video H.264 che usa NellyMoser per l'audio non viene riprodotto sui dispositivi AIR per TV. Utilizzate NellyMoser solo nei video con codifica Sorenson Spark o On2 VP6.
|
Nota:
alcuni file video contengono due flussi audio. Ad esempio, un file video può contenere sia flussi AAC che AC3. AIR for TV non supporta tali file video, quindi l'uso di tale file può portare all'assenza di audio per il video.
Accelerazione hardware grafica
Uso dell'accelerazione hardware grafica
I dispositivi AIR per TV offrono l'accelerazione hardware per le operazioni con grafica 2D. Gli acceleratori grafici hardware del dispositivo sgravano la CPU dal carico di lavoro necessario per effettuare le seguenti operazioni:
L'accelerazione grafica tramite hardware fa sì che molte operazioni grafiche in un'applicazione AIR per TV siano ad alte prestazioni. Alcune di queste operazioni sono:
-
Le transizioni di scorrimento
-
Le transizioni di ridimensionamento
-
Dissolvenza in entrata e in uscita
-
Composizione di più immagini con alfa
Per ottenere i benefici prestazionali dell'accelerazione grafica hardware per questi tipi di operazioni, utilizzate una delle tecniche seguenti:
-
Impostate la proprietà
cacheAsBitmap
su
true
per gli oggetti MovieClip e altri oggetti di visualizzazione il contenuto per lo più non è soggetto a variazioni. Quindi, eseguite le transizioni di scorrimento, le transizioni di dissolvenza e le fusioni alfa su questi oggetti.
-
Utilizzate la proprietà
cacheAsBitmapMatrix
sugli oggetti di visualizzazione che volete ridimensionare o traslare (applicate il riposizionamento x e y).
Utilizzando la classe Matrix per il ridimensionamento e la traslazione, gli acceleratori hardware del dispositivo eseguono le operazioni. In alternativa, valutate la possibilità di modificare le dimensioni di un oggetto di visualizzazione la cui proprietà
cacheAsBitmap
è impostata su
true
. Quando le dimensioni cambiano, il software del runtime ridisegna la bitmap. Il ridisegno tramite il software produce prestazioni inferiori rispetto al ridimensionamento con accelerazione hardware eseguito mediante un'operazione Matrix.
Ad esempio, considerate un'applicazione che visualizza un'immagine che si espande ogni volta che è selezionata da un utente finale. Utilizzate l'operazione di ridimensionamento Matrix più volte per dare l'illusione dell'espansione dell'immagine. Tuttavia, a seconda delle dimensioni dell'immagine originale e di quella finale, la qualità dell'immagine finale potrebbe non risultare accettabile. Pertanto, ripristinate le dimensioni dell'oggetto di visualizzazione quando le operazioni di espansione sono state completate. Poiché
cacheAsBitmap
è
true
, il software del runtime ridisegna l'oggetto di visualizzazione, ma solo una volta, e riproduce un'immagine di alta qualità.
Nota:
solitamente, i dispositivi AIR per TV non supportano la rotazione e l'inclinazione con accelerazione hardware. Quindi, se specificate la rotazione e l'inclinazione nella classe Matrix, AIR per TV esegue tutte le operazioni Matrix nel software. Queste operazioni software possono avere un impatto negativo sulle prestazioni.
-
Utilizzate la classe BitmapData per creare comportamenti di caching bitmap personalizzati.
Per ulteriori informazioni sul caching bitmap, vedete le risorse seguenti.
Gestione della memoria grafica
Per eseguire le operazioni grafiche accelerate, gli acceleratori hardware usano una memoria grafica speciale. Se la vostra applicazione usa tutta la memoria grafica, funzionerà più lentamente perché AIR per TV torna a utilizzare il software per le operazioni grafiche.
Per gestire l'utilizzo della memoria grafica da parte dell'applicazione:
-
Quando avete finito di utilizzare un'immagine o altri dati bitmap, rilasciate la relativa memoria grafica. Per farlo, chiamate il metodo
dispose()
della proprietà
bitmapData
dell'oggetto Bitmap. Ad esempio:
myBitmap.bitmapData.dispose();
Nota:
il rilascio del riferimento all'oggetto BitmapData non libera immediatamente la memoria grafica. Il processo di garbage collection del runtime a un certo punto libera effettivamente la memoria grafica, ma una chiamata del metodo
dispose()
offre un maggiore controllo all'applicazione.
-
Utilizzate PerfMaster Deluxe, un'applicazione AIR fornita da Adobe, per comprendere meglio il funzionamento dell'accelerazione grafica hardware sul dispositivo di destinazione. Questa applicazione mostra i fotogrammi al secondo richiesti per eseguire varie operazioni. Usate PerfMaster Deluxe per confrontare implementazioni differenti della stessa operazione. Ad esempio, confrontate lo spostamento di un'immagine bitmap con lo spostamento di un'immagine vettoriale. PerfMaster Deluxe è disponibile su
Flash Platform for TV
.
Gestione dell'elenco di visualizzazione
Per rendere invisibile un oggetto di visualizzazione, impostate la relativa proprietà
visible
su
false
. In tal modo l'oggetto rimane nell'elenco di visualizzazione, ma AIR per TV non ne esegue il rendering e non lo visualizza. Questa tecnica è utile per gli oggetti che entrano ed escono frequentemente dalla visualizzazione, poiché è a bassa intensità di elaborazione. Tuttavia, l'impostazione della proprietà
visible
su
false
non rilascia nessuna delle risorse dell'oggetto. Di conseguenza, quando avete finito di visualizzare un oggetto, o comunque non dovete visualizzarlo per molto tempo, rimuovetelo dall'elenco di visualizzazione. Inoltre, impostate tutti i riferimenti all'oggetto su
null
. Queste azioni consentono al garbage collector di rilasciare le risorse dell'oggetto.
Utilizzo di immagini PNG e JPEG
Due tra i più comuni formati di immagine usati nelle applicazioni sono PNG e JPEG. In merito all'uso di questi formati grafici nelle applicazioni AIR per TV, considerate quanto segue:
-
AIR per TV solitamente usa l'accelerazione hardware per decodificare i file JPEG.
-
AIR per TV solitamente usa il software per decodificare i file PNG. La decodifica dei file PNG nel software è veloce.
-
PNG è l'unico formato bitmap utilizzabile da più piattaforme che supporta la trasparenza (un canale alfa).
Di conseguenza, osservate queste indicazioni quando usate questi formati immagine nelle applicazioni:
-
Usate i file JPEG per le fotografie al fine di sfruttare i vantaggi della decodifica hardware accelerata.
-
Usate i file di immagine PNG per gli elementi dell'interfaccia utente. Gli elementi dell'interfaccia utente possono infatti avere un'impostazione alfa, e la decodifica software garantisce prestazioni sufficientemente veloci per tali elementi.
Lo stage nelle applicazioni AIR per TV
Quando create un'applicazione AIR per TV ed effettuate operazioni con la classe Stage, valutate i seguenti fattori:
-
Risoluzione dello schermo
-
Area di visualizzazione sicura
-
Modalità di ridimensionamento dello stage
-
Allineamento dello stage
-
Stato di visualizzazione dello stage
-
Progettazione per formati di schermo differenti
-
Impostazione della qualità per lo stage
Risoluzione dello schermo
Attualmente, i dispositivi TV presentano in genere una delle seguenti risoluzioni dello schermo: 540p, 720p, 1080p. Queste risoluzioni corrispondono ai valori seguenti nella classe ActionScript Capabilities:
Risoluzione dello schermo
|
Capabilities.screenResolutionX
|
Capabilities.screenResolutionY
|
540p
|
960
|
540
|
720p
|
1280
|
720
|
1080p
|
1920
|
1080
|
Per scrivere un'applicazione AIR per TV a schermo intero per un dispositivo specifico, codificate in modo permanente
Stage.stageWidth
e
Stage.stageHeight
per la risoluzione dello schermo del dispositivo. Tuttavia, per scrivere un'applicazione a schermo intero eseguibile su più dispositivi, utilizzate le proprietà
Capabilities.screenResolutionX
e
Capabilities.screenResolutionY
per impostare le dimensioni dello stage.
Ad esempio:
stage.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;
Area di visualizzazione sicura
L'
area di visualizzazione sicura
di un televisore è un'area dello schermo rientrata rispetto ai margini dello schermo stesso. Il rientro di quest'area è sufficiente per far sì che l'utente finale possa vedere l'intera area, senza che la cornice dello schermo TV possa oscurarne qualsiasi parte. Poiché la cornice, che racchiude fisicamente lo schermo, varia a seconda della marca e del modello, anche la quantità di rientro necessaria è variabile. L'area di visualizzazione sicura ha lo scopo di garantire che una determinata area dello schermo sia sempre visibile. Viene anche definita
area di sicurezza titolo
(title safe area).
La
sovrascansione
è l'area dello schermo che non è visibile perché si trova dietro la cornice.
Adobe consiglia di applicare un rientro del 7,5% su ogni bordo dello schermo. Ad esempio:
Tenete sempre conto dell'area di visualizzazione sicura quando progettate un'applicazione AIR per TV a schermo intero:
-
Utilizzate l'intero schermo per gli sfondi, ad esempio le immagini di sfondo o i colori di sfondo.
-
Utilizzate l'area di visualizzazione sicura solo per gli elementi critici di un'applicazione, quali il testo, la grafica, il video e gli elementi dell'interfaccia utente come i pulsanti.
La tabella seguente mostra le dimensioni dell'area di visualizzazione sicura per ogni risoluzione tipica dello schermo, con l'applicazione di un rientro del 7,5%.
Risoluzione dello schermo
|
Larghezza e altezza dell'area di visualizzazione sicura
|
Larghezza del rientro sinistro e destro
|
Altezza del rientro superiore e inferiore
|
960 x 540
|
816 x 460
|
72
|
40
|
1280 x 720
|
1088 x 612
|
96
|
54
|
1920 x 1080
|
1632 x 918
|
144
|
81
|
Tuttavia, è sempre opportuno calcolare l'area di visualizzazione sicura in modo dinamico. Ad esempio:
var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int;
horizontalInset = .075 * Capabilities.screenResolutionX;
verticalInset = .075 * Capabilities.screenResolutionY;
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset);
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);
Modalità di ridimensionamento dello stage
Impostate
Stage.scaleMode
su
StageScaleMode.NO_SCALE
e intercettate gli eventi di ridimensionamento dello stage.
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, layoutHandler);
Questa impostazione fa corrispondere le coordinate dello stage alle coordinate in pixel. Insieme allo stato di visualizzazione
FULL_SCREEN_INTERACTIVE
e all'allineamento dello stage
TOP_LEFT
, questa impostazione consente di utilizzare in modo efficace l'area di visualizzazione sicura.
Specificamente, nelle applicazioni a schermo intero, questa modalità di ridimensionamento comporta che le proprietà
stageWidth
e
stageHeight
della classe Stage corrispondano alle proprietà
screenResolutionX
e
screenResolutionY
della classe Capabilities.
Inoltre, quando le dimensioni della finestra dell'applicazione cambiano, il contenuto dello stage mantiene le dimensioni che sono state definite. Il runtime non esegue alcuna operazione automatica di layout o ridimensionamento. Il runtime invia inoltre l'evento
resize
della classe Stage quando le dimensioni della finestra cambiano. Pertanto potete controllare completamente il modo in cui viene modificato il contenuto dell'applicazione quando questa viene avviata e quando la finestra dell'applicazione viene ridimensionata.
Nota:
il comportamento
NO_SCALE
è uguale a quello di qualsiasi altra applicazione AIR. Nelle applicazioni AIR per TV, tuttavia, questa impostazione è di importanza fondamentale per l'utilizzo dell'area di visualizzazione sicura.
Allineamento dello stage
Impostate
Stage.align
su
StageAlign.TOP_LEFT
:
stage.align = StageAlign.TOP_LEFT;
Con questo allineamento, la coordinata
0,0
viene collocata nell'angolo superiore sinistro dello schermo, ovvero nella posizione più comoda per il posizionamento del contenuto con ActionScript.
Insieme alla modalità di ridimensionamento
NO_SCALE
e allo stato di visualizzazione
FULL_SCREEN_INTERACTIVE
, questa impostazione consente di utilizzare in modo efficace l'area di visualizzazione sicura.
Stato di visualizzazione dello stage
Impostate
Stage.displayState
in un'applicazione AIR per TV a schermo intero su
StageDisplayState.FULL_SCREEN_INTERACTIVE
:
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
Questo valore imposta l'applicazione AIR affinché espanda lo stage fino a occupare l'intero schermo, consentendo l'input da tastiera dell'utente.
Adobe consiglia di utilizzare l'impostazione
FULL_SCREEN_INTERACTIVE
. Insieme alla modalità di ridimensionamento
NO_SCALE
e all'allineamento dello stage
TOP_LEFT
, questa impostazione consente di utilizzare in modo efficace l'area di visualizzazione sicura.
Di conseguenza, per un'applicazione a schermo intero, scrivete il codice seguente in un gestore per l'evento
ADDED_TO_STAGE
nella classe principale del documento:
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;
}
Quindi, nel gestore dell'evento
RESIZE
:
-
Confrontate le dimensioni della risoluzione dello schermo con la larghezza e l'altezza dello stage. Se corrispondono, l'evento
RESIZE
si è verificato perché lo stato di visualizzazione dello stage è cambiato in
FULL_SCREEN_INTERACTIVE
.
-
Calcolate e salvate le dimensioni dell'area di visualizzazione sicura e i relativi rientri.
private function onResize(evt:Event):void
{
if ((Capabilities.screenResolutionX == stage.stageWidth) &&
(Capabilities.screenResolutionY == stage.stageHeight))
{
// Calculate and save safe viewing area dimensions.
}
}
Quando le dimensioni dello stage sono uguali a
Capabilities.screenResolutionX
e
screenResolutionY
, AIR per TV fa in modo che l'hardware produca la migliore fedeltà possibile per il video e la grafica.
Nota:
la fedeltà alla quale la grafica e il video vengono visualizzati su uno schermo TV può variare rispetto ai valori
Capabilities.screenResolutionX
e
screenResolutionY
, a seconda del dispositivo che esegue AIR per TV. Ad esempio, un set-top box che esegue AIR per TV può avere una risoluzione video di 1280 x 720 mentre il televisore collegato potrebbe avere una risoluzione di 1920x1080. In ogni caso, AIR per TV fa in modo che l'hardware produca sempre la migliore fedeltà possibile. Pertanto, in questo esempio, l'hardware riproduce un video 1080p a una risoluzione di 1920x1080.
Progettazione per formati di schermo differenti
Potete sviluppare la stessa applicazione AIR per TV a schermo intero in modo che possa funzionare ed essere visualizzata correttamente su più dispositivi AIR per TV. Procedete nel modo seguente:
-
Impostate le proprietà dello stage
scaleMode
,
align
e
displayState
sui valori consigliati:
StageScaleMode.NO_SCALE
,
StageAlign.TOP_LEFT
e
StageDisplayState.FULL_SCREEN_INTERACTIVE
, rispettivamente.
-
Impostate l'area di visualizzazione sicura in base a
Capabilities.screenResolutionX
e
Capabilities.screenResolutionY
.
-
Regolate le dimensioni e il layout del contenuto in base alla larghezza e all'altezza dell'area di visualizzazione sicura.
Anche se gli oggetti del contenuto sono di grandi dimensioni, specialmente rispetto alle applicazioni per dispositivi mobili, concetti quali layout dinamico, posizionamento relativo e contenuto adattivo hanno le stesse implicazioni. Per ulteriori informazioni su come ActionScript supporta questi concetti, vedete
Authoring mobile Flash content for multiple screen sizes
.
Qualità dello stage
La proprietà
Stage.quality
di un'applicazione AIR per TV è sempre
StageQuality.High
. Non potete modificarla.
Questa proprietà specifica la qualità di rendering per tutti gli oggetti dello stage.
Gestione dell'input tramite telecomando
Gli utenti solitamente interagiscono con un'applicazione AIR per TV utilizzando un telecomando. Tuttavia, l'input da telecomando deve essere gestito esattamente come l'input da tastiera di un'applicazione desktop. Specificamente, gestite l'evento
KeyboardEvent.KEY_DOWN
. Per maggiori informazioni, vedete
Rilevamento dell'input da tastiera
nella
Guida per gli sviluppatori di ActionScript 3.0
.
I tasti del telecomando vengono mappati a costanti ActionScript. Ad esempio, i tasti sul tastierino direzionale di un telecomando vengono mappati nel modo seguente:
Tasto del tastierino direzionale del telecomando
|
Costante ActionScript 3.0
|
Su
|
Keyboard.UP
|
Giù
|
Keyboard.DOWN
|
Sinistra
|
Keyboard.LEFT
|
Destra
|
Keyboard.RIGHT
|
OK o Seleziona
|
Keyboard.ENTER
|
In AIR 2.5 sono state aggiunte molte altre costanti Keyboard per il supporto dell'input da telecomando. Per un elenco completo, vedete la
classe Keyboard
nella
Guida di riferimento di ActionScript 3.0 per la piattaforma Adobe Flash
.
Per garantire che la vostra applicazione funzioni sul numero più ampio di dispositivi possibile, Adobe consiglia quanto segue:
-
Utilizzate solo i tasti del tastierino direzionale, se possibile.
Le serie di tasti del telecomando variano da un dispositivo all'altro, ma in genere tutti i dispositivi hanno un tastierino direzionale con gli stessi tasti.
Ad esempio, il telecomando di un lettore Blu-ray solitamente non presenta i tasti "Canale seguente" e "Canale precedente". Anche i tasti Riproduci, Pausa e Stop non sono presenti su tutti i telecomandi.
-
Utilizzate i tasti Menu e Informazioni se l'applicazione necessita di altri tasti oltre a quelli del tastierino direzionale.
Questi due tasti, dopo quelli direzionali, sono i più comuni sui telecomandi.
-
Considerate l'ampia diffusione dei telecomandi universali.
Anche se state creando un'applicazione per un dispositivo particolare, tenete presente che molti utenti non usano il telecomando fornito con il dispositivo, bensì un telecomando universale. Inoltre, gli utenti non programmano sempre il proprio telecomando universale per simulare tutti i tasti del telecomando del dispositivo. Pertanto, è consigliabile utilizzare solo i tasti più comuni.
-
Fate in modo che l'utente abbia sempre a disposizione una "via d'uscita" da qualsiasi situazione mediante uno dei tasti del tastierino direzionale.
Talvolta l'applicazione ha un buon motivo per utilizzare un tasto che non è tra quelli più comuni presenti sui telecomandi. Fornire una via d'uscita tramite uno dei tasti direzionali garantisce un comportamento regolare dell'applicazione su tutti i dispositivi.
-
Non richiedete un input del puntatore a meno che non siate sicuri che il dispositivo AIR per TV di destinazione è in grado di generare un input tramite puntatore.
Benché molte applicazioni desktop prevedano l'input tramite mouse, la maggior parte dei televisori non supporta l'input da puntatore. Di conseguenza, se convertite delle applicazioni desktop per renderle utilizzabili sui televisori, ricordatevi di modificare l'applicazione in modo da escludere l'input da mouse. Le modifiche necessarie riguardano la gestione degli eventi e le istruzioni da fornire all'utente. Ad esempio, quando appare la schermata di avvio dell'applicazione, non visualizzate un testo che dice "Fate clic per iniziare".
Gestione dello stato di attivazione
Quando un elemento dell'interfaccia utente è attivo in un'applicazione desktop, esso è il target degli eventi di input utente quali quelli attivati tramite tastiera e mouse. Inoltre, un'applicazione evidenzia l'elemento dell'interfaccia utente che ha lo stato di attivazione. La gestione dello stato di attivazione in un'applicazione AIR per TV è differente rispetto a quella in un'applicazione desktop perché:
-
Le applicazioni desktop spesso usano il tasto Tab per assegnare lo stato di attivazione al successivo elemento dell'interfaccia utente. L'uso del tasto Tab non è applicabile alle applicazioni AIR per TV. I dispositivi con telecomando solitamente non dispongono di un tasto Tab. Pertanto, la gestione dello stato di attivazione con la proprietà
tabEnabled
di un oggetto di visualizzazione come sul desktop non è possibile.
-
Le applicazioni desktop spesso attendono che l'utente utilizzi il mouse per assegnare lo stato di attivazione a un elemento dell'interfaccia utente.
Pertanto, all'interno dell'applicazione, effettuate le seguenti operazioni:
-
Aggiungete allo stage un listener di eventi per intercettare gli eventi Keyboard quali
KeyboardEvent.KEY_DOWN
.
-
Fornite una logica applicativa per determinare quale elemento dell'interfaccia utente deve essere evidenziato all'utente finale. Assicuratevi che un elemento dell'interfaccia utente venga evidenziato all'avvio dell'applicazione.
-
In base alla logica dell'applicazione, inviate l'evento Keyboard ricevuto dallo stage all'oggetto corrispondente all'elemento appropriato dell'interfaccia utente.
Potete utilizzare
Stage.focus
o
Stage.assignFocus()
per assegnare lo stato di attivazione a un elemento dell'interfaccia utente. Potete quindi aggiungere un listener di eventi a tale oggetto di visualizzazione in modo che riceva gli eventi da tastiera.
Progettazione dell'interfaccia utente
Per garantire il buon funzionamento dell'interfaccia utente di un'applicazione AIR per TV sui televisori, incorporate le raccomandazioni riportate di seguito e relative a:
-
Capacità di risposta dell'applicazione
-
Usabilità dell'applicazione
-
Personalità e aspettative dell'utente
Capacità di risposta
Adottate i seguenti suggerimenti per aumentare al massimo la capacità di risposta di un'applicazione AIR per TV.
-
Riducete il più possibile le dimensioni del file SWF iniziale dell'applicazione.
Nel file SWF iniziale, caricate solo le risorse necessarie per avviare l'applicazione. Ad esempio, caricate solo l'immagine della schermata di avvio dell'applicazione.
Benché questa raccomandazione sia valida per le applicazioni AIR desktop, è ancora più importante per i dispositivi AIR per TV. Ad esempio, i dispositivi AIR per TV non dispongono di una capacità di elaborazione equivalente a quella dei computer desktop. Inoltre, essi memorizzano l'applicazione in una memoria flash, che non consente un accesso rapido come i dischi rigidi dei computer desktop.
-
Fate sì che l'applicazione venga eseguita ad almeno 20 fotogrammi al secondo.
Progettate la grafica in modo da raggiungere questo obiettivo. La complessità delle operazioni grafiche può influire sulla frequenza dei fotogrammi. Per consigli e suggerimenti su come migliorare le prestazioni di rendering, vedete
Ottimizzazione delle prestazioni per la piattaforma Adobe Flash
.
Nota:
l'hardware grafico dei dispositivi AIR per TV solitamente aggiorna lo schermo a una frequenza di 60 Hz o 120 Hz (60 o 120 volte al secondo). L'hardware esegue una scansione dello stage per rilevare gli aggiornamenti a una frequenza, ad esempio, di 30 o 60 fotogrammi al secondo per la visualizzazione su uno schermo da 60 Hz o 120 Hz. Tuttavia, la possibilità che l'utente possa fruire di queste elevate frequenze di fotogrammi dipende dalla complessità delle operazioni grafiche dell'applicazione.
-
Aggiornate lo schermo entro 100 - 200 millisecondi dall'input dell'utente.
Gli utenti diventano impazienti se gli aggiornamenti richiedono più tempo, con la conseguenza che spesso premono i tasti più volte.
Usabilità
Gli utenti delle applicazioni AIR per TV si trovano solitamente in un soggiorno, magari seduti su un divano a tre metri dal televisore. A volte la stanza è poco illuminata. Di solito l'utente usa un telecomando per inviare i comandi al dispositivo. L'applicazione può essere utilizzata da più persone, a volte insieme, altre volte in successione.
Pertanto, per progettare l'interfaccia utente dell'applicazione con un occhio alla sua usabilità, tenete conto delle considerazioni seguenti:
-
Create elementi dell'interfaccia utente di grandi dimensioni.
Quando realizzate il testo, i pulsanti o qualsiasi altro elemento dell'interfaccia utente, tenete presente che l'utente è seduto dall'altra parte della stanza. Fate in modo che tutto sia facilmente visibile e leggibile da una distanza, ad esempio, di tre metri. Non cedete alla tentazione di riempire lo schermo di elementi solo perché è grande.
-
Usate un buon contrasto per fare in modo che il contenuto sia facile da visualizzare e da leggere dalla posizione dell'utente.
-
Fate sì che sia evidente quale elemento dell'interfaccia utente è attivo rendendo quell'elemento più luminoso.
-
Utilizzate il movimento solo se necessario. Ad esempio, lo scorrimento da una schermata a quella successiva per conferire continuità può dare buoni risultati. Tuttavia, il movimento può anche distrarre l'attenzione se non aiuta l'utente a orientarsi oppure non è intrinseco all'applicazione.
-
Fornite sempre all'utente un modo semplice per tornare indietro nell'interfaccia utente.
Per ulteriori informazioni sull'uso del telecomando, vedete
Gestione dell'input tramite telecomando
.
Personalità e aspettative dell'utente
Tenete presente che gli utenti delle applicazioni AIR per TV solitamente cercano un intrattenimento televisivo di qualità in un contesto di svago e relax. Non sono necessariamente esperti conoscitori di computer e cose tecnologiche.
Pertanto, progettate applicazioni AIR per TV con le seguenti caratteristiche:
-
Non usate termini tecnici.
-
Evitate le finestre di dialogo modali (a scelta obbligatoria).
-
Usate istruzioni semplici e informali, appropriate per un ambiente domestico, non per un contesto di lavoro o tecnico.
-
Utilizzate immagini che abbiano l'alta qualità grafica che gli utenti televisivi si aspettano.
-
Create un'interfaccia utente che funzioni facilmente con un dispositivo di telecomando. Non usate interfacce utente o elementi visivi che sono indicati soprattutto per applicazioni desktop o mobili. Ad esempio, le interfacce utente dei dispositivi desktop e mobili spesso prevedono pulsanti sui quali l'utente deve puntare e fare clic con un mouse o un dito.
Caratteri e testo
Potete usare sia i caratteri dispositivo che quelli incorporati nelle applicazioni AIR per TV.
I caratteri dispositivo sono quelli installati all'interno di un dispositivo. Tutti i dispositivi AIR per TV hanno i seguenti caratteri dispositivo:
Nome carattere
|
Descrizione
|
_sans
|
Il carattere dispositivo
_sans
è di tipo sans-serif (senza grazie). Il carattere dispositivo
_sans
installato in tutti i dispositivi AIR per TV è Myriad Pro. Tipicamente, un carattere sans-serif (senza grazie) viene visualizzato meglio su un televisore rispetto ai caratteri serif (con grazie), in virtù della distanza di visione.
|
_serif
|
Il carattere dispositivo
_serif
è di tipo serif (con grazie). Il carattere dispositivo
_serif
installato in tutti i dispositivi AIR per TV è Minion Pro.
|
_typewriter
|
Il carattere dispositivo
_typewriter
è di tipo monospace (a spaziatura fissa). Il carattere dispositivo
_typewriter
installato in tutti i dispositivi AIR per TV è Courier Std.
|
Tutti i dispositivi AIR per TV hanno anche i seguenti caratteri dispositivo asiatici:
Nome carattere
|
Lingua
|
Categoria carattere
|
Codice internazionale
|
RyoGothicPlusN-Regular
|
Giapponese
|
sans
|
ja
|
RyoTextPlusN-Regular
|
Giapponese
|
serif
|
ja
|
AdobeGothicStd-Light
|
Coreano
|
sans
|
ko
|
AdobeHeitiStd-Regular
|
Cinese semplificato
|
sans
|
zh_CN
|
AdobeSongStd-Light
|
Cinese semplificato
|
serif
|
zh_CN
|
AdobeMingStd-Light
|
Cinese tradizionale
|
serif
|
zh_TW e zh_HK
|
Questi caratteri dispositivo AIR per TV presentano le seguenti caratteristiche:
-
Provengono dalla libreria Adobe® Type Library
-
Vengono visualizzati bene sui televisori
-
Sono progettati per la titolazione video
-
Sono caratteri outline, non bitmap
Nota:
i produttori dei dispositivi spesso incorporano altri caratteri dispositivo nei loro prodotti in aggiunta ai caratteri dispositivo AIR per TV.
Adobe mette a disposizione un'applicazione chiamata FontMaster Deluxe che visualizza tutti i caratteri dispositivo presenti in un dispositivo. L'applicazione è disponibile su Flash Platform for TV.
Potete anche incorporare i caratteri nelle applicazioni AIR per TV. Per informazioni sui caratteri incorporati, vedete
Rendering avanzato del testo
nella
Guida per gli sviluppatori di ActionScript 3.0
.
Adobe fornisce le seguenti raccomandazioni sull'uso dei campi di testo TLF:
-
Usate i campi di testo TLF per le lingue asiatiche al fine di sfruttare le impostazioni specifiche del contesto linguistico in cui viene eseguita l'applicazione. Impostate la proprietà
locale
dell'oggetto TextLayoutFormat associato all'oggetto TLFTextField. Per determinare le impostazioni locali, vedete
Selezione delle impostazioni locali
nella
Guida per gli sviluppatori di ActionScript 3.0
.
-
Specificate il nome del carattere nella proprietà
fontFamily
dell'oggetto TextLayoutFormat se il carattere non è uno dei caratteri dispositivo AIR per TV. AIR per TV utilizza il carattere se è disponibile nel dispositivo, altrimenti, in base all'impostazione
locale
, lo sostituisce con il carattere dispositivo AIR per TV appropriato.
-
Specificate
_sans
,
_serif,
o
_typewriter
per la proprietà
fontFamily
e impostate la proprietà
locale
per far sì che AIR per TV scelga il carattere dispositivo AIR per TV corretto. A seconda delle impostazioni locali, AIR per TV sceglie dal set di caratteri dispositivo asiatici o non asiatici. Queste impostazioni forniscono un metodo semplice per utilizzare automaticamente il carattere corretto per le quattro principali lingue asiatiche e l'inglese.
Nota:
se utilizzate i campi di testo classici per il testo di una lingua asiatica, specificate il nome di un carattere dispositivo AIR per TV per garantire un rendering corretto. Se siete sicuri che un altro carattere è installato nel dispositivo di destinazione, potete anche specificare quel carattere.
Per quanto riguarda le prestazioni dell'applicazione, considerate quanto segue:
-
I campi di testo classici consentono un rendering più veloce dei campi di testo TLF.
-
Un campo di testo classico che usa caratteri bitmap garantisce le prestazioni più veloci.
I caratteri bitmap forniscono una bitmap per ogni singolo simbolo, a differenza dei caratteri outline che forniscono solo i dati del contorno di ciascun simbolo. Sia i caratteri dispositivo che quelli incorporati possono essere caratteri bitmap.
-
Se specificate un carattere dispositivo, assicuratevi che sia installato nel dispositivo di destinazione. Se non lo è, AIR per TV trova e utilizza un altro carattere che è installato nel dispositivo. Tuttavia, questo comportamento rallenta le prestazioni dell'applicazione.
-
Come con qualsiasi altro oggetto di visualizzazione, se un oggetto TextField rimane per lo più invariato, impostatene la proprietà
cacheAsBitmap
su
true
. Questa impostazione permette di migliorare le prestazioni nelle transizioni quali la dissolvenza, lo scorrimento e la fusione alfa. Usate
cacheAsBitmapMatrix
per il ridimensionamento e la traslazione. Per ulteriori informazioni, vedete
Accelerazione hardware grafica
.
Sicurezza del file system
Le applicazioni AIR per TV sono applicazioni AIR e, di conseguenza, possono accedere al file system del dispositivo. Tuttavia, per un dispositivo "da soggiorno" è fondamentale che un'applicazione non possa accedere ai file di sistema del dispositivo o ai file di altre applicazioni. Gli utenti dei televisori e di dispositivi correlati non si aspettano e non tollerano errori del dispositivo; dopo tutto, stanno guardando la TV.
Di conseguenza, un'applicazione AIR per TV ha una visibilità limitata del file system del dispositivo. Utilizzando ActionScript 3.0, l'applicazione può accedere solo a directory specifiche (e alle relative sottodirectory). Inoltre, i nomi delle directory utilizzati in ActionScript non sono i nomi effettivi delle directory del dispositivo. Questo livello supplementare protegge le applicazioni AIR per TV dall'accesso fraudolento o non desiderato a file locali che non appartengono all'applicazione.
Per informazioni dettagliate, vedete
Visualizzazione directory per applicazioni AIR per TV
.
Sandbox dell'applicazione AIR
Le applicazioni AIR per TV vengono eseguite nella sandbox dell'applicazione AIR, descritta in
Sandbox dell'applicazione AIR
.
L'unica differenza per le applicazioni AIR per TV consiste nel fatto che esse hanno un accesso limitato al file system, come descritto in
Sicurezza del file system
.
Ciclo di vita dell'applicazione
A differenza di quanto avviene in un ambiente desktop, l'utente finale non può chiudere la finestra in cui viene eseguita l'applicazione AIR per TV. Pertanto, mettete a disposizione nell'interfaccia utente un meccanismo per uscire dall'applicazione.
In genere, un dispositivo consente all'utente finale di uscire direttamente da un'applicazione mediante il tasto Esci del telecomando. Tuttavia, AIR per TV non invia l'evento
flash.events.Event.EXITING
all'applicazione, quindi dovete salvare frequentemente lo stato dell'applicazione in modo tale che essa possa ripristinarsi a uno stato ragionevole all'avvio successivo.
Cookie HTTP
AIR per TV supporta cookie HTTP persistenti e di sessione. AIR per TV memorizza i cookie delle applicazioni AIR in una directory specifica dell'applicazione:
/app-storage/<app id>/Local Store
Il file dei cookie file è denominato
cookies
.
Nota:
su altri tipi di dispositivi, quali dispositivi desktop, AIR non memorizza cookie per ogni singola applicazione. La memorizzazione di cookie specifici dell'applicazione supporta il modelli di sicurezza dell'applicazione e del sistema di AIR per TV.
Utilizzate la proprietà ActionScript
URLRequest.manageCookies
nel modo seguente:
-
Impostate
manageCookies
su
true
. Questo è il valore predefinito e indica che AIR per TV aggiunge automaticamente i cookie alle richieste HTTP e memorizza i cookie nella risposta HTTP.
Nota:
anche quando
manageCookies
è
true
, l'applicazione può aggiungere manualmente un cookie a una richiesta HTTP mediante
URLRequest.requestHeaders
. Se questo cookie ha lo stesso nome di un cookie gestito da AIR per TV, la richiesta contiene due cookie con lo stesso nome. I valori dei due cookie possono essere differenti.
-
Impostate
manageCookies
su
false
. Questo valore indica che l'applicazione è responsabile dell'invio dei cookie nelle richieste HTTP e della memorizzazione dei cookie nella risposta HTTP.
Per ulteriori informazioni, vedete
URLRequest
.
|
|
|