Introduction à Flash
Interface du logiciel
Manipulation du texte
Manipulation des formes
Symboles & Occurrences

Gestion du scénario (la Timeline)
Interpolations

Masques et guide de mouvement

Téléchargements
  - www.lexplicateur.com (flas)
  - Archives de .flas (MX)
  - PDF


# Programmer en Actions Scripts

[11-04-02]

- Mode Expert
- Où placer les scripts ?
- Les différents scripts et gestionnaires
- Programmer un clip pour en faire un modèle
- La syntaxe pointée
- Aide à la saisie du code dans la fenêtre Actions
- Les onglets de la fenêtre Actions (Flash MX2004)

Pour consulter de nombreux exemples supplémentaires, consultez également Lexplicateur.com.


Mode Expert (Flash MX)

Pour utiliser l'ActionScript dans FlashMX et les versions antérieures, vous disposez de 2 modes qualifiés de "Normal" et "Expert". Dans FlashMX 2004, vous n'avez plus le choix car il n'existe plus qu'un seul mode qui s'apparente au mode Expert.

Pour les utilisateurs de Flash MX, revenons sur le mode Normal qui présente l'avantage de ne pas être obligé de bien connaître la programmation pour utiliser l'ActionScript. En revanche, il est plus contraignant en comparaison du mode Expert où vous pouvez dans ce cas éditer vos scripts facilement comme vous le feriez dans n'importe quel éditeur de texte.

Nous vous déconseillons le mode Normal si vous vous penchez sur l'ActionScript et notamment sur les pages de ce site consacrées à ce langage de programmation.

Avant d'utiliser l'ActionScript, commencez tout d'abord par configurer la fenêtre Actions en mode Expert. Sélectionnez la commande "Mode Expert" via le menu contextuel (en haut à droite) de la fenêtre Actions. (Img 1.1)


Img 1.1

Le menu local déroulant de la fenêtre Actions vous permet de configurer cette dernière et notamment faire le choix du mode de programmation. Choisissez le "mode Expert".

 

Où placer les scripts ?

Depuis Flash MX, cette question a un double sens.

Dans le cas où vous auriez déjà l'habitude de programmer dans un autre langage, une partie des experts de la communauté Flash préfère placer tous les scripts (uniquement) sur les images clé des timelines afin de centraliser le code. Cela facilite la relecture et la correction de ces scripts. En revanche, les scripts risquent de devenir rapidement longs.

Si vous programmez en ActionScript pour la première fois et que vous n'avez jamais rédigé le moindre script auparavant, nous ne pouvons pas vous conseiller une telle méthode de programmation. En effet, la logique de développement en Flash est déjà très complexe, si nous ne vous conseillons pas de placer vos scripts de boutons sur des occurrences de boutons, ce sera une difficulté supplémentaire pour votre apprentissage de l'ActionScript. Il sera toujours temps de vous adapter à une méthode supplémentaire.

Si un expert vous force à programmer en plaçant tous vos scripts sur les images clé, ne vous laissez pas influencer. Commencez par maîtriser la syntaxe pointée, vous familiariser avec l'ActionScript, vous pourrez alors facilement changer vos habitudes . Yazo.net est composé d'enseignants et nous savons à l'avance où vous rencontrerez des difficultés lors de votre apprentissage. Evitez cette première difficulté pour commencer.

D'un point de vue général, vous avez le choix entre 2 possibilités d'emplacement de scripts. Sur une image clé ou sur une occurrence. Dans ce dernier cas, vous devez faire la différence entre les occurrences de type Bouton et celles de type Clip.

> Méthodologie : Placer un script sur la timeline
1. Sélectionnez une image clé (Img 1.2)
2. Cliquez dans la fenêtre Actions
3. Saisissez votre code

Effectuez un simple clic sur le rond blanc ou noir représentant l'image clé dans la timeline.

Rappel : Un rond noir précise que l'image clé contient quelque chose sur la scène (une occurrence, un dessin, un texte ou une image) sur le calque spécifié. Un rond blanc précise à l'inverse que rien n'a encore été placé sur la scène sur ce calque. Une image clé est donc l'intersection d'un calque et d'une image. Dans cet exemple, l'image clé 1 de la timeline est vide.

> Méthodologie : Placer un script sur une occurrence
1. Sélectionnez une occurrence située sur la scène (Simple clic et non un double clic)
2. Cliquez dans la fenêtre Actions
3. Saisissez votre code

En fonction de votre choix (image clé ou occurrence), la saisie de votre script varie. En effet, dans le cas d'un script placé sur une occurrence, vous devez utiliser un gestionnaire, ce qui n'est pas forcement le cas sur une image clé (Cf "Les différents scripts et gestionnaires").


Les différents scripts et gestionnaires

Qu'est-ce qu'un gestionnaire ?

Lorsque vous placez votre souris sur un bouton, vous pouvez vous contenter de le survoler mais vous pouvez aussi cliquer dessus. Un clic est d'ailleurs composé de deux étapes : Le clic (Press) et le fait de relâcher le clic (Release). Afin de délimiter les instructions à exécuter selon les événements (ex. : press, release, rollOver, etc.) vous devez définir un gestionnaire qui se compose du mot "on" (que nous pourrions traduire par l'expression "Au moment où"), suivi d'un événement compris entre parenthèses puis d'une paire d'accolades.

Script d'occurrence de type bouton : Lorsque vous placez un bouton sur la scène, l'occurrence que vous obtenez ne peut recevoir qu'un seul type de gestionnaire, mais avec plusieurs configurations.

on (press) {
  Instruction
}

Il est très important de respecter la syntaxe ci-dessus. Vous ne devez omettre aucune parenthèse, ni les accolades. La première accolade peut être ramenée à la ligne si vous le souhaitez.

Autres événements qui peuvent être placés en lieu et place du press de l'exemple ci-dessus : rollOver, rollOut, release, releaseOutside, keyPress"s".

Pour l'événement keypress, il s'agit d'une lettre que devra taper l'utilisateur pour que l'(es) instruction(s) contenue(s) dans le gestionnaire se déclenche(nt). Vous pouvez donc remplacer la lettre "s" par n'importe quelle autre touche du clavier. Si vous souhaitez utiliser les flèches de déplacement ou d'autres touches (Espace, Tabulation, etc.), remplacez la lettre "s" par : "<Left>" pour gauche, "<Space>" pour la barre d'espace, "<Enter>" pour a touche entrée, "<Tab>", etc.

Exemples :

on (keyPress "<Left>") {
  gotoAndStop(5);
}
on (keyPress "d") {
 gotoAndStop(5);
}

Tapez le raccourci ESC - O - N dans la fenêtre des Actions afin d'insérer directement ce gestionnaire (Pensez à bien cliquer dans la fenêtre Actions avant d'exécuter ce raccourci).

Dans le cas où vous devez surveiller l'activité relative au clavier (touche enfoncée) il sera conseillé d'utiliser les gestionnaires lorsque vous serez familiarisé ave l'ActionScript. Nous évoquions quelques lignes plus haut, la possibilité d'avoir plusieurs configurations. Nous voulions parler de la possibilité d'avoir plusieurs gestionnaires dans le même script.

on (press) {
  Instruction
}
on (release) {
  Instruction
}

Script d'occurrence de type clip : Lorsque vous placez un clip sur la scène, l'occurrence que vous obtenez ne peut recevoir qu'un seul type de gestionnaire.

ATTENTION, CETTE TECHNIQUE EST COMPATIBLE AVEC FLASH MX 2004 MAIS ELLE RESTE FORTEMENT DECONSEILLEE. IL EST PREFERABLE D'UTILISER LE GESTIONNAIRE ONENTERFRAME DEPUIS FLASH MX.

onClipEvent (enterFrame) {
  Instruction
}

 

Si vous devez impérativement développer une animation compatible Flash 5, les scripts que vous placez sur une image clé ne peuvent pas recevoir les gestionnaires que nous allons vous présenter quelques lignes plus bas. Dans ce cas, il ne vous reste plus que la méthode des scripts placés sur une occurrence de type clip.

Il est important de souligner également que les lignes d'instructions contenues dans ce gestionnaire ont une portée limitée (sont valables pour) à la timeline du clip et le clip lui même. Si vous devez faire référence à une occurrence ou une variable qui se trouvent sur la scène, vous devez utiliser le mot _root qu'on peut traduire par "sur la scène" ou encore _parent si votre animation doit un jour faire l'objet d'un chargement avec la commande loadMovie().

Il est aussi très important de respecter la syntaxe ci-dessus. Vous ne devez omettre aucune parenthèse, ni les accolades. La première accolade peut être ramenée à la ligne si vous le souhaitez.

Autres événements qui peuvent être placés en lieu et place du enterFrame de l'exemple ci-dessus : load et unLoad, keyDown, data. Cette liste n'est volontairement pas exhaustive car les novices n'utilisent que ces événements. Les développeurs plus expérimentés utilisent quant à eux d'autres techniques et non ces événements et ce type de gestionnaire (objets d'écoute (listeners), setInterval(), méthodes de gestionnaire, etc.).

Analysons quelques exemples :

onClipEvent (enterFrame) {
  this._x = this._x+5
}

Commentaire : Dans un gestionnaire onClipEvent(), this fait référence à l'occurrence sur laquelle ce script est placé. L'occurrence va donc être déplacée de 5 en 5 pixels vers la droite, de façon continue grace à l'évènement onEnterFrame.

onClipEvent (enterFrame) {
 _x +=5
}

Commentaire : Dans cet autre exemple, le résultat sera le même que celui du dessus. En effet, lorsqu'il est fait référence à une propriété sans préciser de nom d'occurrence, le clip qui porte ce script est concerné par l'instruction (Ce n'est pas valable pour l'occurrence de type bouton).

 

onClipEvent (load) {
  maballe._visible=false
}

Commentaire : A l'intérieur du clip qui porte ce script, sur sa timeline, il y a un l'occurrence d'un clip qui porte le nom maballe. Elle va être masquée au chargement du clip sur la scène (grace au gestionnaire load).

onClipEvent (load) {
  _root.maballe._rotation = 35
}

Commentaire : Sur la scène, plus précisément à côté de l'occurrence du clip qui porte ce script, il y a un occurrence qui porte le nom maballe. Pour faire référence à cette dernière, il est indispensable d'utiliser _root.

onClipEvent (data) {
  _rotation = valrotate
}

Commentaire : Dans cet autre exemple, l'événement data est utilisé lorsque la commande loadVariables() a été utilisée. Cet événement permet de temporiser le chargement de données.

Détails : Le clip qui contient le script ci-dessus s'intitule "biblio". Sur la scène, la ligne d'instruction ci-dessous a été exécutée. (A partir d'un script d'image ou d'occurrence).

loadVariables("tarifs.txt","biblio")

Lorsque le chargement du fichier contenant les variables (dont la variable valrotate) sera terminé, le clip va exécuté la ligne d'instruction (_rotation = valrotate).

Tapez le raccourci ESC - O - C dans la fenêtre des Actions afin d'insérer directement ce gestionnaire (Pensez à bien cliquer dans la fenêtre Actions avant d'exécuter ce raccourci).

 

Script d'image clé : Des script sans gestionnaires et d' autres avec...

Faut-il utiliser des gestionnaires dans un script d'image ? A sa sortie, Flash MX présentait une nouveauté qui a, depuis, changé nos habitudes de programmation. En effet, nous pouvions jusqu'à Flash 5 placer nos scripts sur une image sans être obligé d'utiliser le moindre gestionnaire. Il était même impossible d'utiliser les gestionnaires.

Lorsque vous souhaitez placer un script qui devra s'exécuter au passage de la tête de lecture sur l'image sur laquelle elle se trouve, vous ne devez pas utiliser de gestionnaire.

En revanche, si vous souhaitez associer un événement à une occurrence, vous devez utiliser l'une des méthodes de gestionnaires suivantes :

Méthodes pour les boutons

 

onPress

onRelease

onReleaseOutside

onRollOut

onRollOver

onSetFocus

onKillFocus

Méthodes pour les clips

 

onLoad

onUnload

onEnterFrame

onMouseDown

onMouseUp

onMouseMove

onKeyDown

onKeyUp

onData

onSetFocus

onKillFocus

onRollOver

onRollOut

onPress

onRelease

Vous pouvez constater grâce au tableau ci-dessus que vous pouvez à présent rendre un clip cliquable avec onPress (et non onMouseDown) !!!

oiseau.onPress = function() {
  oiseau._x += 5;
};

Pour exécuter en boucle une instruction, vous pouvez même associer la méthode onEnterFrame à _root (ou au nom d'une autre occurrence). Préférez tout de même l'utilisation de la fonction setInterval(). Utilisez this au lieu de _root si l'animation qui contient ce code est susceptible d'être chargée avec la commande loadMovie().

_root.onEnterFrame = function() {
   oiseau._x += 5;
};

Pour détecter un clic sur la scène, vous pouvez aussi utiliser le script suivant :

_root.onMouseDown = function() {
   oiseau._x = _root._xmouse;
   oiseau._y = _root._ymouse;
};

A chaque clic sur la scène, l'occurrence intitulée oiseau est positionnée à la place de la souris.

Programmer un clip pour en faire un modèle

Cette technique s'adresse vraiment aux utilisateurs qui maîtrisent bien les bases de la programmation en ActionScript ainsi que les fonctions plus avancées. Vous devez aussi bien comprendre le système de timeline propre à chaque symbole.

Lorsque vous placez un symbole de type clip sur la scène, vous devez ensuite le programmer si vous souhaitez le contrôler. Imaginons que le fait de déposer un symbole de type clip sur la scène vous permette d'utiliser l'occurrence obtenue comme un bouton qui nous mènerait toujours à l'adresse d'un site précis lorsqu'on clique dessus. Deuxième et dernier exemple, lorsque vous placez un clip sur la scène, il tourne de façon continue dans le sens des aiguilles d'une montre. Voici les deux scripts qu'il faudrait placer sur la première image clé de deux clips différents (Vous pourriez aussi placer ces deux scripts sur la même image clé de la timeline d'un clip. Le résultat serait double.). Le mot this permet de faire référence à l'occurrence qui sera issue (déposée sur la scène ou dans un clip) de ce symbole qui contient le code.

this.onPress = function() {
   getURL("http://www.nomdusite.com");
};

 

this.onEnterFrame = function() {
   this._rotation+=3
};

Cette technique sera très utile, surtout si vous devez placer des clips dynamiquement sur la scène. Placer un symbole dynamiquement sur la scène.

La syntaxe pointée

Pour la rédaction des scripts, vous devez respecter impérativement une syntaxe précise au même titre que vous devez respecter la structure d'une phrase (en français par exemple). Sujet, verbe, complément ! Vous devez remplacer les espaces conventionnelles par des points.

 

Ex. : Placer l'occurrencce à 3 pixels du bord gauche de la scène > Placer.ocurrence.3pixelsde.bordgauchescene

L'exemple donné ci-dessus se traduirait par : nomoccurrence._x=3

L'explication d'un tel concept est légèrement abstrait, plutôt difficile à comprendre pour des novices en programmation. Choisissons alors d'analyser plusieurs exemples afin de mieux comprendre. Imaginons que les lignes d'instructions ci-dessous se trouvent sur un bouton qui se trouve lui même sur la scène.

 

 

balle._x = 12 (Une occurrence intitulée balle est placée à 12 pixels du bord gauche de la scène).

tableau.balle._x = 12 (Un clip intitulé tableau contient une occurrence intitulée balle qui est placée à 12 pixels (vers la droite) du centre de l'occurrence Tableau).

balle._x=balle._x + 3 (On règle la position horizontale de l'occurrence balle à 3 pixels de sa position actuelle).

balle.score = 12 ( Une variable cintitulée scoreontenue dans le clip intitulé balle e,st initialiséeà 12).

balle.gotoAndStop(5) ( La tête de lecture du clip intitulé balle est placée sur l'image 5).

La lecture se fait de gauche à droite. Vous trouvez à gauche de la ligne d'instruction, le nom d'une occurrence de type clip ou bouton, puis peuvent suivre ensuite un autre nom d'occurrence (dans le cas de clips imbriqués), une propriété, un nom de variable, une fonction ou une commande.

Lorsque vous développerez à un autre niveau de programmation, vous pourrez relativiser les propos que vous venez de lire et vous comprendrez ainsi qu'il ne s'agit pas obligatoirement du nom d'une occurrence pour commencer la ligne d'instruction d'un script, il peut s'agir d'un nom d'objet (d'instance) crée avec le constructeur new.

Aide A LA saisie du code dans la fenêtre Actions

ESC-X-X

Lorsque vous devez rédiger vos propres scripts, cela sous entend bien évidemment que vous connaissez le langage, mais connaissez vous la saisie "simplifiée" ? Depuis Flash 5, il est possible d'insérer dans vos lignes d'instructions, certaines commandes/fonctions par un simple raccourci clavier.

Ex. : gotoAndStop(5) contient 14 caractères, donc 14 touches du clavier à taper.
Pour gagner du temps, vous pouvez procéder ainsi :

Alors que vous vous apprêtez à taper la lettre "g" de gotoAndStop(5), tapez plutôt sur la touche Escape (ou Echappe) de votre clavier*. Tapez ensuite successivement sur les 2 touches (lettres) du clavier qui permettent d'insérer la commande automatiquement. (Ex. : g et s).

* Relâchez cette touche, vous ne devez surtout pas la garder enfoncée comme vous le feriez dans le cas d'un raccourci clavier classique (Ex. : CTRL-S ou Commande-S pour sauvegarder un document).

Certaines commandes et fonctions peuvent donc être saisies très rapidement grâce à ce type de raccourcis. Voici quelques exemples supplémentaires :

O - N : Taper le gestionnaire rattaché à l'occurrence d'un bouton (on () {..})
O - C : Taper le gestionnaire rattaché à l'occurrence d'un clip (onClipEvent() {...})
G - S : gotoAndStop()
G - U : getURL()
S - T : stop()

Nous vous conseillons fortement un tel usage des raccourcis clavier. Pour une plus grande optimisation de votre travail (production) vous pouvez aussi utiliser les touches ci-dessous pour la sélection de vos outils, la manipulation de votre timeline et celle de vos occurrences sur la scène. Bien sûr, il ne s'agit pas d'une liste exhaustive mais au contraire des raccourcis minimums à connaître.

Raccourcis Mac et PC : CTRL pour PC et Commande pour Mac. Ex. : CTRL-Entrée (PC) ou Commande-Entrée (Mac)

OUTILS (Tapez uniquement les lettres ci-dessous sans CTRL (PC) ou Commande (Mac))

V : Flèche noire
T : Outil texte
O : Ovale
R : Rectangle

TIMELINE

F6 : Créer une image clé
F7 : Créer une image-clé vide
F5 : Créer/Insérer des images

CTRL-Entrée ou Commande-Entrée : Lecture de votre animation dans une nouvelle fenêtre.
CTRL-Shift-Entrée ou Commande-Shift-Entrée : Lecture en activant le mode deboggage
(Pensez à cliquer sur le triangle vert de lecture pour lancer votre animation)

SCENE

F8 : Créer un symbole (à partir d'une sélection)
Shift-F8 : Créer un symbole vide (A composer juste après l'execution du raccourci)
CTRL-Shift-V ou Commande-Shift-V : Coller une occurrence à la même place que sa copie (Commande-C)

MISE EN FORME DU TEXTE

CTRL-Shift-B ou Commande-Shift-B : Mettre une sélection de texte en gras (P > Normal- I > Italique)
CTRL-Shift-C ou Commande-Shift-C : Centrer un texte dans sa zone de texte (J > Justifier - L > Gauche)

MENU CONTEXTUEL DANS LA FENETRE D'ACTIONS

Il est une autre technique qui permet une aide supplémentaire relative au méthodes et propriétés que vous pouvez associer à un nom d'instance ou _root. Cette technique est très contraignante car cela vous oblige à nommer vos noms d'instances avec un suffixe supplémentaire. Le principe reste simple. La liste ci-dessous répertorie toutes les classes et leurs suffixes disponibles dans Flash MX et MX 2004.

Objets

Suffixes à placer derrière le nom de l'instance

Array

_array

Button

_btn

Camera

_cam

Color

_color

ContextMenu

_cm

ContextMenuItem

_cmi

Date

_date

Error

_err

LoadVars

_lv

LocalConnection

_lc

Microphone

_mic

MovieClip

_mc

MovieClipLoader

_mcl

PrintJob

_pj

NetConnection

_nc

NetStream

_ns

SharedObject

_so

Sound

_sound

String

_str

TextField

_txt

TextFormat

_fmt

Video

_video

XML

_xml

XMLNode

_xmlnode

XMLSocket

_xmlsocket

Liste extraite de l'aide en ligne de Flash MX 2004

Il est clair que vous devez impérativement donner des noms représentatifs pour vos noms d'instance et de variable dans vos développements, surtout si vous devez travailler en équipe et/ou travailler sur des projets contenants de nombreuses lignes de code. Alors un peu plus ou un peu moins, on est pas à quelques lettres... Au lieu de nommer votre instance sonFond = new Sound(), vous pouvez la nommer sonFond_sound = new Sound(). Vous pourrez alors obtenir le menu ci-dessous. A vous de voir si vous voulez vous contraindre à ajouter des suffixes à vos noms d'instances pour obtenir ce menu dès que vous saisissez le point situé derrière le nom d'instance. Selon vos habitudes de développements, selon la nature des développements, il est intéressant de se contraindre à une telle nomenclature. Les suffixes des classes ci-dessus figurant en gras valent la peine d'être retenus et utilisés.

 

Les onglets de la fenêtre ActionS

Lorsque vous réaliserez des projets contenants de nombreuses lignes de code avec de nombreux scripts, vous rencontrerez alors l'obligation de vous déplacer de scripts en scripts (pas obligatoirement sur la même timeline). Vous allez donc passer une bonne partie de votre temps à rechercher et sélectionner les images clés (et occurrences) qui contiennent les scripts à modifier, puis vous rechercherez enfin la bonne ligne d'instruction en utilisant l'ascenseur de la fenêtre Actions. Pour vous éviter tout ce travail, vous pouvez "mémoriser des scripts" (et leur position dans la fenêtre Actions) dans des onglets situés en bas de la fenêtre Actions.

> Méthodologie : Mémoriser un script et sa position dans la fenêtre Actions
1. Sélectionnez le script à mémoriser
2. Cliquez sur l'icône ci-dessous

Vous obtenez alors une fenêtre Actions qui contient autant d'onglets (dans sa partie basse) que vous avez fait de clics.

Cliquez sur les onglets de l'animation ci-dessous (ce n'est pas une image).