TUTORIELS 
ActionScript: mise en application

Page 1 | 2

Suite de l'exploration du langage ActionScript sous Flash 5 et MX: première application et découverte des spécificités du langage.
 (23 septembre 2002)
 

Préparation
Plutôt que d'expliquer les déclarations de variables, de fonctions ou de classes
, ce qui peut vite se réveler rébarbatif, nous allons construire de petites animations très simples utilisant principalement ActionScript, en tentant de mettre en avant les spécificités de Flash. Nous ne parlerons pas ici des capacités d'animation du logiciel, comme les interpolations, car nous partons du principe que les lecteurs de cet article se sont déjà penchés sur ce coté de Flash; par ailleurs, ces capacités ne sont que très rarement utilisées dans le cadre d'applications professionnelles...

Nous travaillerons directement dans l'interface de Flash (accessible via la touche F9 ou le menu "Fenêtres/Actions"). En effet, s'il est possible de créer son code dans un éditeur de texte exterieur puis d'importer le fichier fichier.as lors du test, de la publication ou de l'exportation de l'animation via la commande #include "fichier.as", l'environnement de Flash MX dispose d'un vérificateur de syntaxe, d'un affichage de conseil de codes et d'un débogueur. Depuis Flash 5, vous pouvez aussi accélerer l'écriture de code en utilisant les raccourcis-clavier: taper la touche d'échappement (Esc.) puis "d" et "m" affichera ainsi directement la fonction duplicateMovieClip(). Quasiment toutes les fonctions possèdent ainsi un raccourci...

Première approche
Pour présenter la manière de programmer en ActionScript dans Flash, nous allons commencer par un petit programme extrêmement simple, pour les bases, puis passerons à des exemples plus proches de ce qu'un développeur peut attendre de Flash.

Nous allons créer une horloge analogique simple. Cela nous permettra d'aborder l'utilisation de clips, de variables, de classes et des méthodes d'objets, ainsi que la gestion du scénario.

Sous Flash, commencez un nouvelle animation et créez des symboles (ctrl-F8 ou pomme-F8) de type "clip", un cercle plein et un trait vertical, à l'aide des outils de dessin situés sur la gauche de l'interface. Nommez-les "fond" et "aiguille".
Pour aiguille, utilisez le panneau Info (Flash 5) ou l'inspecteur de propriétés (Flash MX) pour donner au dessin les coordonnées x = 0 et y = -(la hauteur (h) du dessin) au sein de son clip, ou utilisez le panneau Aligner (ctrl-K) et, après avoir sélectionné "aligner vers la scène", cliquez sur "aligner les bords gauche" et "aligner les bords inférieurs". De même, pour fond, utilisez le panneau Aligner pour centrer le dessin avec "aligner les centres horizontalement" et "aligner les centres verticalement". Vous comprendrez que le petit "+" au centre de la scène corresponde au "centre de gravité" du clip.
Ne vous souciez pas de leur taille ni de leur couleur, et n'en glissez pas d'occurence sur la scène principale. C'est tout ce dont vous aurez besoin pour l'interface, le reste sera fait via ActionScript.

Pour pouvoir créer dynamiquement leurs occurences sur la scène, il faut les lier à la scène, ou les "exporter". Pour chaque symbole de la bibliothèque, sélectionnez-le puis dans Options (Flash 5) ou avec un clic droit (Flash MX), sélectionnez "Liaison", puis "Exporter ce symbole" (Flash 5) ou "Exporter pour ActionScript" (Flash MX), donnez le nom du symbole comme identifiant (fond et aiguille), validez. Retournez sur la scène principale.

Rédaction du code
Le scénario ne comprend pour l'heure qu'un calque appellé "Calque 1", avec une image clé vide (un petit cercle blanc, indiquant que la scène ne contient aucun élément). Nous allons créer deux autres images-clés afin d'y mettre notre code.
Renommez le calque en "scripts": c'est une méthode à laquelle il faut s'astreindre dès le début afin de prendre l'habitude de ne pas éparpiller son code sur plusieurs calques...
Sélectionnez l'image-clé vide, et appuyez deux fois sur la touche F6: cela crée deux images-clés vides à coté de la première.
Sélectionnez à nouveau la première image-clé, et appuyez sur F9: cela ouvre l'éditeur ActionScript. Dans les options d'affichage, passez en mode Expert (autre habitude à prendre dès le début). Nous sommes maintenant prêts à taper le code qui se trouvera sur la première image-clé. Etant la première image à être lue, elle contiendra l'ensemble du code d'initialisation ainsi que les principales fonctions utilisées par l'animation.

(actions pour l'image-clé 1 du calque "scripts")
//création des occurences sur la scène
attachMovie("fond", "fond", 0);
attachMovie("aiguille", "heures", 1);
attachMovie("aiguille", "minutes", 2);
attachMovie("aiguille", "secondes", 3);


Nous voilà d'entrée de jeu plongés dans une spécificité de Flash, avec la fonction/méthode de clip attachMovie. Cette fonction permet de créer une nouvelle instance d'un symbole depuis la bibliothèque de l'animation. Elle s'utilise de la manière suivante: attachMovie("symbole", "identifiant", profondeur);symbole est le nom du symbole à instancier et identifiant le nom de l'occurence créée. De son coté, profondeur permet de placer une occurence sur un calque donné, afin de la placer devant ou derrière d'autre objets. Ainsi, nous avons ici placé fond au plus bas niveau, heures au niveau supérieur, minutes au-dessus de heures et secondes au-dessus de minutes. secondes sera donc toujours au-dessus de minutes, et ainsi de suite...
Notez que l'ActionScript requiert le respect de la casse: attachmovie() sera considéré comme une fonction utilisateur, tandis que attachMovie() sera reconnue en tant que fonction interne.

Ces occurences sont pour l'heure placées au point d'origine de la scène, c'est-à-dire en haut à gauche. Il nous faut donc les positionner sur la scène. Nous complétons le code de la première image-clé:

(actions pour l'image-clé 1 du calque "scripts", suite)
//positionnement des éléments
fond._x = 275;
fond._y = 200;
heures._x = fond._x;
heures._y = fond._y;
minutes._x = fond._x;
minutes._y = fond._y;
secondes._x = fond._x;
secondes._y = fond._y;

Les méthodes _x et _y sont des propriétés de la classe MovieClip, et sont donc disponibles dans tous les clips. Ce sont des entiers qui définissent une coordonnée du clip par rapport au clip parent (ici, la scène principale).
Nous plaçons donc ici tous nos éléments aux mêmes coordonnées, qui correspondent au centre d'une animation Flash de base (550*400). Etant donné que nous avons placé l'axe de fond au centre du cercle, et l'axe de aiguille à l'extrêmité inférieure du trait, nous obtenons un cercle situé au centre de l'animation et des aiguilles (identiques pour l'heure) qui partent du centre de ce cercle. Pour tester l'animation, faites ctrl-Envoi ou pomme-Envoi.

Il nous faut maintenant différencier les aiguilles entres-elles. Nous allons donc changer leurs tailles et leurs couleurs.

(actions pour l'image-clé 1 du calque "scripts", suite)
//taille des aiguilles
heures._height = fond._height / 4;
minutes._height = fond._height / 3;
secondes._height = fond._height / 2;

_height est une autre propriété de la classe MovieClip, qui donne le hauteur en pixels. Pour obtenir/modifier la largeur d'un clip, on utiliserait la propriété _width.
Partir de fond._height nous permet de faire en sorte que les aiguilles ne dépasseront pas le fond. secondes, l'aiguille la plus longue, sera donc égale au rayon du cercle fond (sa largeur divisée par 2), et les deux autre aiguilles seront plus petites encore...

(actions pour l'image-clé 1 du calque "scripts", suite)
//couleur des aiguilles
coulF = new Color(fond);
coulH = new Color(heures);
coulM = new Color(minutes);
coulS = new Color(secondes);
coulF.setRGB(0xBBBBBB);
coulH.setRGB(0x0000FF);
coulM.setRGB(0x00FFFF);
coulS.setRGB(0xFFFFFF);

Nous abordons avec Color le domaine des classes intégrées. Le langage ActionScript comporte des classes permettant de manipuler certaines données, à l'aide de méthodes et des constantes propres. Les classes de base sont celles issues de la norme ECMA (Math, Date, Array...), mais Flash dispose aussi de ses propres classes spécifiques: les classes d'animation (Color, MovieClip, Sound...), les classes client/serveur (LoadVars, XML et XMLSocket) et les classes "Auteur".
Certaines méthodes de classes peuvent être appellées directement, par exemple Math.abs(x); donne la valeur absolue de x. D'autres, comme setRGB, exigent la création d'une nouvelle occurrence de leur classe pour permettre leur emploi, par le biais de l'opérateur new : c = new Color(objet) créé un objet gérant la couleur de objet.
Nous avons donc ici construit quatre gestionnaires de couleur pour notre fond et nos trois aiguilles. Nous pouvons ensuite faire appel à la méthode setRGB pour leur donner une couleur (en hexadécimal): gris, bleu, cyan et blanc.


Page 1 | 2

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page