Lab : Opérations de base sur une fenêtre AIR en Actionscript (minimize, drag & close)

Opérations de base : fermer, déplacer, réduire, agrandir, restaurer, redimensionner.

Préliminaires

Pour ce qui est du AIR (ou Apollo) en actionscript, les commandes sont quasi identiques en Javascript donc cette page peut aussi vous servir cher amis Ajaxiens smiley myconcept:actionscript & php développement et management pour applications RIA (internet, intranet et extranet).


Pour éviter les problèmes de namespaces lors de la création du fichier AIR (car gros changemements entre la M5 et la M6) , veillez à avoir les derniers update de Flash CS3.


Perso je les ai installé dans l'ordre suivant :

  • flash9_en_us_9_0_2_update
  • flashcs3_air_extension_p3_en_121407
  • flash9_en_us_9_0_3_update

Fermer une fenêtre AIR

Rien de bien compliqué

/**
 * Close the AIR Windows
 * @param   *       e       The Event > set to * 'cause will be a MouseEvent or Event following the target (stage click (DisplayObject) or systray click (NativeMenuItem)).    
 * @return  void
 **/ 
private function closeZeBox(e:*):void{
    stage.nativeWindow.close();
}
//from the close button (mc)
close_btn.addEventListener(MouseEvent.CLICK,closeZeBox);
...
//from the dock/systray menu item (nmi stands for NativeMenuItem)
docky_exit_nmi.addEventListener(Event.SELECT, closeBox);
...

En javascript ça donne :

window.htmlControl.stage.window.close();

Déplacer une fenêtre AIR

Encore plus simple si c'est possible smiley myconcept: actionscript & php developments

/**
 * Drag the AIR Windows
 * @param   MouseEvent  e       //  
 * @return  void
 **/ 
private function dragZeBox(e:MouseEvent):void{
	stage.nativeWindow.startMove();	
}

dragbar_mc.addEventListener(MouseEvent.MOUSE_DOWN,dragZeBox);

Et en javascript (ici avec ExtJS) ça donne :

this.drag_div.dom.style.cursor = 'move';
this.drag_div.on('mousedown', function(e){ window.htmlControl.stage.window.startMove();});

Rendre visible et passer l'application au premier plan

En gros ça rend l'application visible, ça la met au premier plan sur le bureau et ça la restaure, le tout en une commande :

NativeWindow.activate ()

Les trois statuts : minimiser, agrandir et restaurer une fenêtre

Vous êtes prêts ? Alors attention les yeux tjrs plus compliqué smiley myconcept:actionscript php project developments & managements :

//Pour Agrandir une fenêtre
NativeWindow.maximize ()

//Pour minimiser une fenêtre
NativeWindow.minimize ()

//Pour restaure une fenêtre
NativeWindow.restore ()

En javascript ça donne :

window.htmlControl.stage.window.restore();
window.htmlControl.stage.window.maximize();
window.htmlControl.stage.window.minimize();

Pour connaitre le statut de la fenêtre vous pouver utiliser NativeWindowDisplayState mais pour savoir si vous êtes en fullscreen ou pas il faut toujour faire référence à la propriété displayState du Stage et non de la NativeWindow comme pour une application flash (9 & sup) classique.

Ces 3 opérations envoient deux event : NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGE et sous chrome NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING. Ce second Event peut être utile car il vous permet d'annuler l'opération via preventDefault() (mais cette partie là je ne l'ai pas encore exploité pour en mesurer la portée donc cf la doc smiley myconcept:actionscript & php développement et management pour applications RIA (internet, intranet et extranet)).

Pour redimensionner (resize) une fenêtre AIR

Je n'ai pas encore eu l'occasion de tester cette partie mais ça semble aussi simple que pour le reste, le plus compliquer sera sans doute de gérer le positionnement du contenu dans la fenêtre même. En gros il suffirait de faire NativeWindow.startResize(lecotéoulecoin:String) et y'a un event qui permet de gérer le truc : NativeWindowBoundsEvent.RESIZING. Pour le string que l'on peut passer en paramètre cf la doc mais par défaut c'est le coin en bas à droite avec la valeur de NativeWindowResize.BOTTOM_RIGHT et rien qu'en regardant le nom de la propriété je pense pas que vous aillez besoin de la doc pour deviner les autres constantes...

- MY Concept FlashPlayer Loader for actionscript demo's and movie/animation player-