TUTORIEL FLASH 
Les classes Screen(), Slide() et Form()
Elles se cachent derrière le nouveau paradigme de création d'application proposé par Flash MX 2004 Pro : les écrans. (10/11/2005)
L'une des nouveautés les moins mises en avant de Flash MX 2004 Pro est la possibilité de créer des diaporamas (à la manière de PowerPoint) et des applications à bases de formulaires (proche des possibilités offertes par VisualBasic, lire notre article du 12/07/04). Ces deux aspects de Flash sont regroupés sous l'appellation d'écrans.

Les écrans sont pourtant une avancée majeure de FMX04Pro, car ils modifient totalement la manière de concevoir une application Flash. L'application ne se base plus du tout sur le scénario (timeline), mais par écran. Le passage d'un écran à l'autre se fait soit de manière séquentielle dans un diaporama, soit en fonction des actions de l'utilisateur (et des évènements).

Il s'agit donc d'une formalisation élégante répondant à toutes ces applications n'utilisant qu'une image-clef, ou plusieurs bloquées par un gotoAndStop().

Toute la gestion des transitions d'un écran à l'autre se fait donc par ActionScript, les actions de la souris ou les touches du clavier, là où une animation Flash classique laisse le scénario se dérouler. Ces nouvelles fonctionnalités profitent d'ailleurs pleinement des capacités Objet d'ActionScript 2.0 : le développeur peut entièrement les gérer au travers de la classes Screen(), et de ses classes héritières, Slide() et Form(). Ce sont ces trois classes que nous allons étudier ici.

Screen()
Il s'agit de la classe principale de gestion des écrans. Tous les objets Slide() et Form() héritent des propriétés et méthodes de cette classe racine. En particulier, c'est cette classe qui gère les écrans imbriqués, leur affichage ou fermeture, et les principaux évènements. Elle est elle-même une extension de la classe Loader(), ce qui lui permet de charger des fichiers externes de type SWF ou JPEG.

Screen() propose nombre d'évènements de type on(), notamment relatifs à la souris : mouseDown, mouseOver, mouseOut, mouseUp, ainsi que les nouveautés mouseDownSomewhere et mouseUpSomewhere qui repèrent un clic même en dehors de l'écran, sont définis dans Screen(), et donc utilisables également pour un objet Slide() ou Form().

La classe définit également deux autres évènements on() : allTransitionInDone et allTransitionOutDone, qui servent lors de l'utilisation de transitions d'un écran à l'autre - donc particulièrement utile pour un diaporama.

Les cinq propriétés (currentFocusedScreen, rootScreen, indexInParent, parentIsScreen et numChildScreens) permettent surtout de connaître la hiérarchie des écrans, tandis que l'unique méthode, GetChildScreen(), renvoie un tableau par le biais duquel le développeur peut cibler les enfants d'un écran en cours.

Slide()
Les diaporamas sont donc fortement inspirés du fonctionnement de PowerPoint, mais profitent des capacités de Flash. Chaque diapositive du diaporama peut comprendre autant d'éléments graphiques que nécessaire, et chaque diapositive enfant hérite (par "transparence") du contenu des diapositives parentes. De fait, seules les diapositives sans enfants sont prises en compte lors du parcours du diaporama.

Slide() hérite donc des propriétés et méthodes de Screen(), mais y ajoute un grand nombre qui sont spécifiques à son fonctionnement (et ne s'appliquent pas à Form()). Celles-ci permettent de manipuler les diapositives, d'en tirer des informations, ou de naviguer au sein du diaporama.

La notion de navigation étant clef dans un diaporama, les possibilités s'y rapportant sont nombreuses : huit propriétés (currentSlide, currentChildSlide, currentFocusedSlide, firstSlide, lastSlide, nextSlide, previousSlide ou encore autoKeyNav) et 5 méthodes (gotoFirstSlide(), gotoLastSlide(), gotoNextSlide(), gotoPreviousSlide(), gotoSlide()). Particulièrement, la propriété autoKeyNav indique si la navigation au clavier se fait avec les touches par défaut, ou d'autres définies par le développeur.

Cette redéfinition des touches se fait grâce au gestionnaire Slide.defaultKeydownHandler et à la classe Key(), sous la forme suivante :

on (load) {
   this.defaultKeyDownHandler = function(eventObj:Object) {
      switch (eventObj.code) {
      case Key.DOWN :
         this.currentSlide.gotoNextSlide();

         break;
...


Cela autorise le développeur à personnaliser d'autant son diaporama.
Slide.hideChild et Slide.revealChild sont les évènements servant à gérer l'affichage et la disparition d'une diapositive.

Form()
Restent les formulaires, qui posent Flash en concurrent direct du développement RAD de type VisualBasic, voire Delphi. Chaque formulaire correspond à un état différent de l'application que l'on créé, et à la manière des diapositives, chaque formulaire hérite du contenu graphique de ses parents. Au développeur de préciser quel formulaire afficher selon les actions de l'utilisateur.

Bien qu'en théorie plus compliqué à gérer, Form() présente moins de méthodes et propriétés que Slide(). La seule méthode est getChildForm(), qui renvoie la référence au formulaire ciblé. Il reste ensuite à l'afficher ou la faire disparaître avec la propriété Form.visible.

Le reste des propriétés permettent de s'y retrouver dans l'ensemble des formulaires : rootForm renvoi le formulaire racine, parentForm le parent immédiat du formulaire en cours, numChildForms le nombre de formulaires enfants, currentFocusForm celui qui est ciblé à l'instant.

  Forum

Réagissez dans les forums de JDN Développeurs

À partir de là, il est possible de faire apparaître et disparaître du contenu selon les besoins de l'applications, le tout étant géré par ActionScript et les évènements clavier/souris qui s'appliquent de la même manière qu'à une animation Flash classique.
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages