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
.
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 
/**
* 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é
:
//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
).
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...