Adobe Air e Fullscreen

Un vecchio amico di scuola mi ha chiesto un’applicazione che mostrasse video, fotografie e ambienti virtuali… insomma, un modo immersivo ed emozionale per vivere un’esperienza unica all’interno di un cantiere ancora in costruzione nel centro di Milano! Detto, Fatto!

Ho chiesto allora ai cavalieri di inventare qualcosa per questo mio amico, e si sono messi subito al lavoro!

Per prima cosa hanno scelto di sviluppare un’applicazione in Adobe Air. Ottima scelta, qualità e solidità, multipiattaforma e massima personalizzazione grafica!

Ma arriviamo al nocciolo della questione! Il mio vecchio amico voleva che si vedesse tutto a pieno schermo perché i video erano esattamente in full-hd cioè 1920×1080 pixel e purtroppo Mac OS X si mangia una decina di pixel in alto nella barra di stato.

I miei cavalieri non si sono dati pace, hanno cercato in lungo e largo, intervistato Guru ed Evangelisti nel mondo di Adobe, dalla California all’Olanda ma senza nessuna risposta…

“Ci deve essere un modo!”, si ostinavano a dire! “Le librerie di Air mettono a disposizione i metodi ma non funziona ancora!”

Alla fine ce l’hanno fatta, scoprendo per caso che anche su windows 7 non funzionava, e adesso vi spiego come:

La situazione iniziale era questa:

L’applicazione si adattava allo stage, ma purtroppo lo stage, secondo Air non era delle dimensioni del fullscreen e l’angolo TOP-LEFT stava sotto la barra di stato!

public function Main():void {
            toggleFullScreen();
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            ...
}
 
private  function toggleFullScreen():void {
            stage.displayState = ( stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE ) ?
                                                 StageDisplayState.NORMAL :
                                                 StageDisplayState.FULL_SCREEN_INTERACTIVE;
}

Ma niente, il fullscreen non continuava a funzionare su mac.
Solo per uno strano caso del destino, dopo un aggiornamento a windows 7 si sono accorti che anche su pc il fullscreen non funzionava.
Ma ecco che l’intuito geniale ha trovato la soluzione:

public function Main():void {
            NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
            ...
}
private  function onInvoke(event:InvokeEvent):void {
            toggleFullScreen();
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            ...
}
private  function toggleFullScreen():void {
            stage.displayState = ( stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE ) ?
                                                 StageDisplayState.NORMAL :
                                                 StageDisplayState.FULL_SCREEN_INTERACTIVE;
}

Per consentire all’applicazione di andare correttamente in FullScreen, bisogna attendere che questa si sia inizializzata completamente.

Adobe Air, a tale scopo, mette a disposizione un evento chiamato “InvokeEvent.INVOKE”. Tale evento indica, appunto, il completamento di tutte le operazioni interne di inizializzazione.

Non ci resta quindi che catturarlo e attraverso lo Handler richiamare la funzione che attivi il FullScreen!

Spero che questo articolo sia utile per tutti quelli che non riescono a mandare un’applicazione AIR in fullscreen.

Aspetto i commenti di tutti!

Ocho Durando

Tag: , , , , ,

6 Commenti a “Adobe Air e Fullscreen”

  1. Joe scrive:

    Hurrah,
    It works on a Mac! Thanks very much.

    J

  2. Patricio Brito scrive:

    Fantastic tutorial. it works for me too. Finally a good solution for fullscreen on AIR. Thank you for sharing… carpe diem!

  3. largo scrive:

    grazie mille. it fixed my problems on windows as well? weird, anyway, grazie mille

  4. BNNY scrive:

    thx! works like a charm

  5. Mille, mille grazie!!

Lascia un Commento