Forums d'entraide informatique - Astuces - Conseils
Des experts à votre écoute pour tous vos dysfonctionnements
Vous n'êtes pas identifié.
#1 20-08-2008 15:57:29
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Guide de référence sur l'action script de flash
Pour une meilleur lisibilité vous pouvez télécharger ce document au format pdf en cliquant ici :
http://www.parisdepannage.fr/dossiers/cours-as.pdf
TABLE DES MATIERES
INTRODUCTION : Bien démarrer avec ActionScript . . . . . . . . . . . . . . . . . . . . . . . 9
Public visé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Configuration système requise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Utilisation de la documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Conventions typographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Terminologie utilisée dans ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
PARTIE I : Bienvenue dans ActionScript
CHAPITRE 1 : Nouveautés de Flash MX 2004 ActionScript . . . . . . . . . . . . . . . . 15
Eléments de langage nouveaux et modifiés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Nouveau modèle de sécurité et fichiers SWF hérités . . . . . . . . . . . . . . . . . . . . . . . 17
Portage de scripts existants sur Flash Player 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Modifications de l’éditeur ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Modifications de débogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Nouveau modèle de programmation orientée objet . . . . . . . . . . . . . . . . . . . . . . . . 25
CHAPITRE 2 : Notions de base du langage ActionScript. . . . . . . . . . . . . . . . . . . 27
Différences entre ActionScript et JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Support du format Unicode pour ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A propos des types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Affectation de types de données aux éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
A propos des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Utilisation d’opérateurs pour manipuler les valeurs des expressions . . . . . . . . . . . . 47
Définition du chemin d’un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Utilisation de fonctions intégrées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Création de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 Table des matières
CHAPITRE 3 : Rédaction et débogage de scripts . . . . . . . . . . . . . . . . . . . . . . . . 57
Contrôle de l’exécution d’ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Utilisation du panneau Actions et de la fenêtre de script . . . . . . . . . . . . . . . . . . . . 59
Utilisation de l’éditeur ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Débogage de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Utilisation du panneau de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Mise à jour de Flash Player pour le test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
PARTIE II : Gestion des événements et création d’interactivité
CHAPITRE 4 : Gestion d’événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Utilisation de méthodes de gestionnaire d’événement . . . . . . . . . . . . . . . . . . . . . . 87
Utilisation des écouteurs d’événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Utilisation de gestionnaires d’événement de bouton et de clip . . . . . . . . . . . . . . . . 90
Création de clips avec états de bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Domaine du gestionnaire d’événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Domaine du mot-clé « this » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
CHAPITRE 5 : Création d’interactivité avec ActionScript. . . . . . . . . . . . . . . . . . . 95
A propos des événements et de l’interaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Contrôle de la lecture d’un fichier SWF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Création d’interactivité et d’effets visuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Structure d’un exemple de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
PARTIE III : Utilisation des objets et des classes
CHAPITRE 6 : Utilisation des classes intégrées . . . . . . . . . . . . . . . . . . . . . . . . . 117
A propos des classes et des occurrences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Aperçu des classes intégrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
CHAPITRE 7 : Utilisation des clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
A propos du contrôle des clips à l’aide d’ActionScript . . . . . . . . . . . . . . . . . . . . . 125
Appel de plusieurs méthodes sur un seul clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Chargement et déchargement de fichiers SWF supplémentaires . . . . . . . . . . . . . 127
Spécification d’un scénario racine pour les fichiers SWF chargés . . . . . . . . . . . . . 127
Chargement de fichiers JPEG dans des clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Modification de la position et de l’apparence d’un clip . . . . . . . . . . . . . . . . . . . . 129
Déplacement des clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Création de clips à l’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Ajout de paramètres aux clips créés dynamiquement . . . . . . . . . . . . . . . . . . . . . . 132
Gestion des profondeurs de clip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Dessin de formes avec ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Utilisation de clips comme masques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Table des matières 5
Gestion d’événements de clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Affectation d’une classe à un symbole de clip. . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Initialisation de propriétés de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
CHAPITRE 8 : Utilisation du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Utilisation de la classe TextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Création de champs de texte à l’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Utilisation de la classe TextFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Formatage de texte avec les feuilles de style en cascade. . . . . . . . . . . . . . . . . . . . . 143
Utilisation de texte au format HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Création de texte défilant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
CHAPITRE 9 : Création de classes avec ActionScript 2.0. . . . . . . . . . . . . . . . . 161
Principes de la programmation orientée objet . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Utilisation des classes : un exemple simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Création et utilisation de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Membres d’occurrence et de classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Création et utilisation d’interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Compréhension du chemin de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Utilisation de paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Importation de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Méthodes get/set implicites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Création de classes dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Compilation et exportation des classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
PARTIE IV : Utilisation des données et des médias externes
CHAPITRE 10 : Utilisation de données externes. . . . . . . . . . . . . . . . . . . . . . . . . 185
Echange de variables avec une source distante . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Echange de messages avec Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Fonctions de sécurité de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
CHAPITRE 11 : Utilisation de médias externes . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Aperçu du chargement de média externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Chargement de fichiers SWF et JPEG externes . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Chargement des fichiers externes MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Lecture des balises ID3 dans les fichiers MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Lecture dynamique des fichiers FLV externes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Préchargement de média externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2066 Table des matières
PARTIE V : Référence
CHAPITRE 12 : Dictionnaire ActionScript Présentation. . . . . . . . . . . . . . . . . . . 211
Exemple d’entrée pour la plupart des éléments ActionScript . . . . . . . . . . . . . . . . 211
Exemple d’entrée pour les classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Contenu du dictionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Classe Accessibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Classe Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Classe Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Classe Boolean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Classe Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Classe Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Classe Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Classe ContextMenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Classe ContextMenuItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Classe CustomActions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Classe Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Classe Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Classe Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Classe Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Classe LoadVars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Classe LocalConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Classe Math. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Classe Microphone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Classe Mouse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Classe MovieClip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Classe MovieClipLoader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Classe NetConnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Classe NetStream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Classe Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Classe Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Classe PrintJob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Classe Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Classe SharedObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Classe Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Classe Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Classe String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Classe System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
Objet System.capabilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
Objet System.security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
Classe TextField. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
Classe TextField.StyleSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
Classe TextFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
objet TextSnapshot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
Classe Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Classe XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Classe XMLNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Classe XMLSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763Table des matières 7
ANNEXE A : Messages d’erreur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
ANNEXE B : Priorité et associativité des opérateurs. . . . . . . . . . . . . . . . . . . . . . 779
ANNEXE C : Touches du clavier et valeurs de code correspondantes . . . . . . . . 781
Lettres A à Z et chiffres (clavier standard) de 0 à 9. . . . . . . . . . . . . . . . . . . . . . . . 781
Touches du clavier numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
Touches de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
Autres touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
ANNEXE D : Ecriture de scripts destinés à des versions antérieures
de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
A propos du ciblage d’anciennes versions de Flash Player. . . . . . . . . . . . . . . . . . . 787
Utilisation de Flash MX 2004 pour créer du contenu destiné à Flash Player 4 . . . 787
ANNEXE E : Programmation orientée objet avec ActionScript 1. . . . . . . . . . . . . 791
A propos d’ActionScript 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7998 Table des matières9
INTRODUCTION
Bien démarrer avec ActionScript
Macromedia Flash MX 2004 et Flash MX Professionnel 2004 sont les outils standard des
professionnels pour la création de contenu web percutant. ActionScript est le langage que vous
utilisez pour développer une application dans Flash. Vous pouvez très bien vous servir de Flash
sans ActionScript. Toutefois, si l’interactivité utilisateur est une de vos priorités ou si vous voulez
utiliser des objets autres que ceux qui sont intégrés dans Flash (tels les boutons et les clips) ou
créer des applications plus complexes à partir de fichiers SWF, il est probable que vous aurez
recours à ActionScript.
Public visé
Ce manuel présume que vous avez déjà installé Flash MX 2004 ou Flash MX Professionnel 2004
et que vous savez comment l’utiliser. Il considère également comme acquis que vous savez placer
des objets sur la scène et les manipuler dans l’environnement auteur de Flash. Si vous avez déjà
écrit des programmes, vous vous sentirez en terrain connu avec ActionScript. Et si vous êtes un
novice, vous n’aurez aucun mal à faire son apprentissage. Le plus simple consiste à commencer par
les commandes de base et à aborder les éléments plus complexes progressivement.
Configuration système requise
La configuration système requise par ActionScript est identique à celle de Flash MX 2004 ou
Flash MX Professionnel 2004. Toutefois, la documentation suppose que vous utilisez les
paramètres de publication par défaut pour vos fichiers Flash : Flash Player 7 et ActionScript 2.0.
Si vous modifiez ces paramètres, les explications et les exemples de code contenus dans la
documentation risquent de ne pas fonctionner correctement.
Utilisation de la documentation
Ce manuel passe en revue les principes généraux de la syntaxe ActionScript, explique comment
utiliser ce langage pour intervenir sur différents types d’objet et décrit en détail la syntaxe et
l’utilisation de chaque élément. Commencez par vous familiariser avec la terminologie et les
concepts de base utilisés dans le reste du manuel (consultez le Chapitre 2, Notions de base du
langage ActionScript, page 27). Vous pourrez ensuite vous concentrer sur l’écriture et le débogage
de scripts Flash (consultez le Chapitre 3, Rédaction et débogage de scripts, page 57). 10 Introduction : Bien démarrer avec ActionScript
Avant de créer vos propres scripts, suivez les leçons « Ecrire des scripts avec ActionScript » et
« Créer un formulaire avecune logique conditionnelle et envoyer des données », qui constituent
une introduction interactive à l’utilisation d’ActionScript. Pour localiser ces leçons, sélectionnez
Aide > Comment > Manuel de prise en main rapide.
Une fois que vous maîtrisez les concepts de base, vous pouvez rechercher, dans le reste du manuel,
les informations qui vous permettront d’obtenir l’effet que vous recherchez. Si, par exemple, vous
voulez savoir comment écrire un script qui exécute une action spécifique lorsqu’un utilisateur
clique avec la souris, consultez le Chapitre 4, Gestion d’événements, page 87.
Lorsque vous trouvez des informations sur une commande qui vous intéresse, vous pouvez
consulter l’entrée correspondante dans le Chapitre 12, Dictionnaire ActionScript Présentation,
page 211 ; tous les éléments du langage y sont répertoriés par ordre alphabétique.
Conventions typographiques
Ce manuel utilise les conventions typographiques suivantes :
• La police de code indique le code ActionScript.
• La police de code en italique identifie un élément, tel un paramètre ou un nom d’objet
ActionScript, que vous remplacez par votre propre texte lorsque vous créez un script.
Terminologie utilisée dans ce manuel
Ce manuel utilise les termes suivants :
• Vous fait référence au programmeur qui écrit un script ou une application.
• L’utilisateur désigne la personne qui exécute vos scripts et applications.
• Compilation correspond au moment auquel vous publiez, exportez, testez ou déboguez votre
document.
• Exécution représente le moment auquel votre script s’exécute dans Flash Player.
Les termes ActionScript tels que méthode et objet sont définis dans le Chapitre 2, Notions de base
du langage ActionScript, page 27.
Ressources supplémentaires
La documentation spécifique à Flash et aux produits apparentés est disponible séparément.
• Pour plus d’informations sur l’utilisation de l’environnement auteur de Flash, consultez le
guide Utilisation de Flash de l’aide. Pour en savoir plus sur l’utilisation des composants,
consultez le guide Utilisation des composants de l’aide.
• Pour plus d’informations sur la création d’applications de communication, consultez les leçons
« Développement d’applications de communication » et « Gestion du serveur de communications
Flash ».
• Pour plus d’informations sur l’accès aux services web avec des applications Flash, consultez
Using Flash Remoting.Ressources supplémentaires 11
Le site web Macromedia DevNet (www.macromedia.com/devnet) est régulièrement actualisé et
propose les informations les plus récentes sur Flash, ainsi que des conseils d’utilisateurs
expérimentés, des rubriques avancées, des exemples, des astuces et d’autres mises à jour. Consultez
régulièrement ce site web pour vous tenir au courant des nouveautés de Flash et tirer le meilleur
parti de votre programme.
Le Centre de support Macromedia Flash (www.macromedia.com/support/flash) fournit des
TechNotes, des mises à jour de la documentation et des liens vers des ressources supplémentaires
dans la communauté Flash.12 Introduction : Bien démarrer avec ActionScriptPARTIE I
Bienvenue dans ActionScript
Cette section inclut des informations élémentaires sur le langage ActionScript.
Le Chapitre 1 comprend des informations concernant les nouveautés ou les modifications
apportées à ActionScript et Flash Player 7. Si vous avez déjà utilisé ActionScript, veillez à lire
attentivement ces informations.
Si vous n’avez jamais utilisé ActionScript, les chapitres 2 et 3 contiennent les bases qui vous
permettront de comprendre la terminologie et la syntaxe d’ActionScript et de savoir écrire et
déboguer vos scripts.
Chapitre 1: Nouveautés de Flash MX 2004 ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Chapitre 2: Notions de base du langage ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Chapitre 3: Rédaction et débogage de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
PARTIE I15
CHAPITRE 1
Nouveautés de Flash MX 2004 ActionScript
Macromedia Flash MX 2004 et Macromedia Flash MX Professionnel 2004 bénéficient de
plusieurs améliorations pour vous permettre d’écrire facilement des scripts plus robustes à l’aide
du langage ActionScript. Ces améliorations, décrites dans ce chapitre, portent notamment sur de
nouveaux éléments de langage, les outils de débogage et d’édition (consultez Modifications de
l’éditeur ActionScript, page 23 et Modifications de débogage, page 24), ainsi que l’utilisation d’un
modèle de programmation plus orienté objet (consultez Nouveau modèle de programmation
orientée objet, page 25).
Ce chapitre contient également une section détaillée à lire attentivement si vous projetez de
publier l’un de vos fichiers existants Flash MX ou d’une version antérieure dans Flash Player 7
(consultez Portage de scripts existants sur Flash Player 7, page 17).
Eléments de langage nouveaux et modifiés
Cette section décrit les éléments du langage ActionScript qui sont nouveaux ou ont été modifiés
dans Flash MX 2004. Pour pouvoir utiliser ces éléments dans vos scripts, vous devez utiliser Flash
Player 7 (lecteur par défaut) lors de la publication des documents.
• Les méthodes Array.sort et Array.sortOn() vous permettent d’ajouter des paramètres pour
spécifier des options de tri supplémentaires, par exemple un tri ascendant ou descendant, le
respect de la casse lors du tri et bien d’autres options encore.
• Les propriétés Button.menu, MovieClip.menu et TextField.menu se conjuguent aux
nouvelles classes ContextMenu et ContextMenuItem pour vous permettre d’associer des
éléments de menu contextuel à des objets Button, MovieClip ou TextField.
• La Classe ContextMenu et la Classe ContextMenuItem vous permettent de personnaliser le menu
contextuel qui s’affiche lorsqu’un utilisateur clique avec le bouton droit de la souris (Windows)
ou en appuyant sur la touche Ctrl (Macintosh) dans Flash Player.
• La Classe Error et les commandes throw et try..catch..finally vous permettent
d’implémenter une gestion des exceptions plus robuste.
• Les méthodes XML.addRequestHeader() et LoadVars.addRequestHeader() ajoutent ou
modifient les en-têtes de requête HTTP (tels que « Content-Type » ou « SOAPAction »)
envoyés avec les actions POST.
• La fonction MMExecute() vous permet d’émettre des commandes de l’API Flash JavaScript à
partir d’ActionScript.16 Chapitre 1 : Nouveautés de Flash MX 2004 ActionScript
• (Windows uniquement) L’écouteur d’événement Mouse.onMouseWheel est généré lorsque
l’utilisateur effectue un défilement en utilisant la molette de la souris.
• La méthode MovieClip.getNextHighestDepth() vous permet de créer des occurrences de
MovieClip au moment de l’exécution et de vous assurer que leurs objets seront placés devant les
autres objets dans l’espace z d’un clip parent. La méthode MovieClip.getInstanceAtDepth()
vous permet d’accéder à des occurrences de MovieClip créées dynamiquement en utilisant la
profondeur comme index de recherche.
• La méthode MovieClip.getSWFVersion() vous permet de déterminer quelle version de Flash
Player est supportée par un fichier SWF chargé.
• Les méthodes MovieClip.getTextSnapshot() et l’objet TextSnapshot vous permettent
d’intervenir sur du texte qui figure dans des champs de texte statiques dans un clip.
• La propriété MovieClip._lockroot vous permet d’indiquer qu’un clip agira en tant que
_root pour tout clip qui y sera chargé, ou que la signification de _root dans un clip ne sera pas
modifiée si le clip est chargé dans un autre clip.
• La Classe MovieClipLoader vous permet de contrôler la progression du téléchargement de
fichiers dans des clips.
• La Classe NetConnection et la Classe NetStream vous permettent de lire en continu des fichiers
vidéo en local (fichiers FLV).
• La Classe PrintJob vous donne (ainsi qu’à l’utilisateur) davantage de contrôle sur les impressions
à partir de Flash Player.
• Le gestionnaire d’événement Sound.onID3 donne accès aux données ID3 associées à un objet
Sound contenant un fichier MP3.
• La propriété Sound.ID3 donne accès aux métadonnées faisant partie d’un fichier MP3.
• La Classe System comporte de nouveaux objets et méthodes et l’Objet System.capabilities possède
plusieurs propriétés nouvelles.
• La propriété TextField.condenseWhite vous permet de supprimer l’espace blanc
supplémentaire dans les champs de texte HTML qui sont rendus dans un navigateur.
• La propriété TextField.mouseWheelEnabled vous permet de spécifier si le contenu d’un
champ de texte doit défiler lorsque le pointeur de la souris est placé dessus et que l’utilisateur
actionne la molette.
• La Classe TextField.StyleSheet vous permet de créer un objet feuille de style contenant des règles
de formatage de texte, comme la taille et la couleur de la police, et d’autres styles de formatage.
• La propriété TextField.styleSheet vous permet d’associer un objet feuille de style à un
champ de texte.
• La méthode TextFormat.getTextExtent() accepte un nouveau paramètre et l’objet qu’elle
renvoie contient un nouveau membre.
• La méthode XML.addRequestHeader() vous permet d’ajouter ou de modifier les en-têtes de
requête HTTP (tels que « Content-Type » ou « SOAPAction ») envoyés avec les actions POST. Portage de scripts existants sur Flash Player 7 17
Nouveau modèle de sécurité et fichiers SWF hérités
Les règles qui permettent à Flash Player de déterminer si deux domaines sont identiques ont
changé dans Flash Player 7. Les règles qui déterminent si, et de quelle façon, un fichier SWF servi
par un domaine HTTP peut accéder à un fichier SWF ou charger des données à partir d’un
domaine HTTPS ont également changé. Dans la plupart des cas, ces modifications n’ont pas
d’incidence, à moins que vous ne portiez vos fichiers SWF existants sur Flash Player 7
Toutefois, si vous avez publié, pour Flash Player 6 ou une version antérieure, des fichiers SWF qui
chargent des données issues d’un fichier résidant sur un serveur et que le fichier SWF à l’origine
de l’appel s’exécute dans Flash Player 7, une nouvelle boîte de dialogue invitant l’utilisateur à
autoriser l’accès est susceptible de s’afficher. Vous pouvez empêcher l’affichage de cette boîte de
dialogue en mettant en oeuvre un fichier de régulation sur le site contenant les données. Pour plus
d’informations sur cette boîte de dialogue, consultez A propos de la compatibilité avec les précédents
modèles de sécurité Flash Player, page 199.
Il peut également être nécessaire d’implémenter un fichier de régulation si vous utilisez des
bibliothèques partagées à l’exécution. Si le fichier SWF chargé ou en chargement est publié pour
Flash Player 7 et que les fichiers chargés ou en chargement ne sont pas servis par le même
domaine, utilisez un fichier de régulation pour autoriser l’accès. Pour plus d’informations sur les
fichiers de régulation, consultez A propos de l’autorisation de chargement de données inter-domaines,
page 198.
Portage de scripts existants sur Flash Player 7
A l’instar de toute nouvelle version, Flash Player 7 prend en charge un plus grand nombre de
commandes ActionScript que ses versions précédentes. Ces commandes vous permettent
d’implémenter des scripts plus robustes. (Consultez Eléments de langage nouveaux et modifiés,
page 15.)Toutefois, si vous avez utilisé l’une de ces commandes dans vos scripts existants, il est
possible que le script ne fonctionne pas correctement si vous le publiez pour Flash Player 7.
Par exemple, si l’un de vos script contient une fonction nommée Error, le script peut sembler se
compiler correctement mais ne pas être exécuté comme prévu dans Flash Player 7, car Error est
désormais une classe intégrée (et donc un mot réservé) dans ActionScript. Vous pouvez corriger
votre script en renommant la fonction Error, par exemple en ConditionErreur.
De plus, Flash Player 7 implémente différentes modifications qui affectent la façon dont un
fichier SWF accède à un autre ficher SWF, la façon dont les données externes peuvent être
chargées et le mode d’accès aux paramètres et données locaux (par exemple les paramètres de
confidentialité et les objets partagés localement). Enfin, le comportement de certaines fonctions
existantes a été modifié.
Si vous voulez publier, pour Flash Player 7, des scripts destinés à Flash Player 6 ou une version
antérieure, vous devrez peut-être les modifier afin qu’ils se conforment à l’implémentation de
Flash Player 7 et fonctionnent correctement. Les modifications requises sont décrites dans cette
section. 18 Chapitre 1 : Nouveautés de Flash MX 2004 ActionScript
Conformité à la norme ECMA-262 version 4
Flash Player 7 a subi plusieurs modifications pour mieux se conformer à la norme ECMA-262
version 4 (consultez www.mozilla.org/js/language/es4/index.html). Outre les techniques de
programmation basées sur les classes disponibles dans ActionScript 2,0 (consultez Nouveau modèle
de programmation orientée objet, page 25), d’autres fonctions ont été ajoutées et certains
comportements modifiés. De plus, lorsque vous effectuez une publication pour Flash Player 7 et
que vous utilisez ActionScript 2.0, vous pouvez attribuer un type d’objet à un autre. Pour plus
d’informations, consultez Attribution d’objets, page 41. Vous n’êtes pas obligé d’actualiser vos
scripts existants. Toutefois, il est souhaitable d’utiliser ces fonctions si vous publiez, pour Flash
Player 7, des scripts que vous modifierez et enrichirez par la suite.
Contrairement aux modifications mentionnées plus haut, les modifications répertoriées dans le
tableau suivant (dont certaines renforcent la conformité à la norme ECMA) sont susceptibles de
changer le comportement des scripts existants. Si vous utilisez ces fonctions dans des scripts
existants que vous avez l’intention de publier pour Flash Player 7, passez les modifications en
revue pour déterminer si le code fonctionne toujours correctement ou si vous devez le récrire. Plus
particulièrement, il est conseillé d’initialiser toutes les variables des scripts que vous portez sur
Flash Player 7, car undefined est évalué de façon différente dans certains cas.
Fichier SWF publié pour Flash Player 7 Fichier SWF publié pour des versions
précédentes de Flash Player
Le respect de la casse est pris en charge (les noms
de variable dont la casse est différente sont
interprétés comme étant différents). Cette
modification a également des répercussions sur les
fichiers chargés au moyen de #include et les
variables externes chargées via LoadVars.load().
Pour plus d’informations, consultez Hauteur de
casse, page 31.
Le respect de la casse n’est pas pris en
charge (les noms de variable dont la casse est
différente sont interprétés comme étant
identiques).
L’évaluation de undefined dans un contexte
numérique renvoie NaN.
monNombre +=1;
trace(monNombre); // NaN
L’évaluation de undefined dans un contexte
numérique renvoie 0.
monNombre +=1;
trace(monNombre); // 1
Lorsque undefined est converti en chaîne, le résultat
est undefined.
prénom = "Joan ";
nom = "Flender";
trace(prénom + deuxième prénom + nom);
// Joan undefinedFlender
Lorsque undefined est converti en chaîne, le
résultat est "" (une chaîne vide).
prénom = "Joan ";
nom = "Flender";
trace(prénom + deuxième prénom + nom);
// Joan FlenderPortage de scripts existants sur Flash Player 7 19
Règles de nom de domaine pour les paramètres et les données locales
Dans Flash Player 6, les règles de correspondance de superdomaine sont utilisées par défaut pour
accéder aux paramètres locaux (tels que les autorisations d’accès de la caméra ou du microphone)
ou aux données persistantes localement (objets partagés). Cela signifie que les paramètres et
données de fichiers SWF résidant sur ici.xyz.com, la.xyz.com et xyz.com sont partagés, et tous
enregistrés sur xyz.com.
Dans Flash Player 7, les règles de correspondance exacte de domaine sont utilisées par défaut.
Cela signifie que les paramètres et données d’un fichier hébergé sur ici.xyz.com sont enregistrés
sur ici.xyz.com, les paramètres et données d’un fichier hébergé sur la.xyz.com sont enregistrés sur
la.xyz.com et ainsi de suite.
Une nouvelle propriété, System.exactSettings, vous permet de spécifier les règles à utiliser.
Cette propriété est supportée pour les fichiers publiés pour Flash Player 6 ou une version
ultérieure. Pour les fichiers publiés pour Flash Player 6, la valeur par défaut est false, ce qui
signifie que les règles de correspondance de superdomaine sont utilisées. Pour les fichiers publiés
pour Flash Player 7, la valeur par défaut est true, ce qui signifie que les règles de correspondance
exacte de domaine sont utilisées.
Si vous utilisez des paramètres ou des données locales persistantes et souhaitez publier un fichier
SWF Flash Player 6 pour Flash Player 7, il peut être nécessaire de définir cette valeur sur false
dans le fichier porté.
Pour plus d’informations, consultez System.exactSettings, page 655.
Accès aux inter-domaines et sous-domaines entre des fichiers SWF
Lorsque vous développez une série de fichiers SWF qui communiquent les uns avec les autres (par
exemple, lorsque vous utilisez loadMovie(), MovieClip.loadMovie(),
MovieClipLoader.LoadClip(), ou des objets Local Connection), vous pouvez héberger les
animations dans des domaines différents ou dans des sous-domaines différents d’un même
superdomaine.
Lorsque vous convertissez une chaîne en valeur
booléenne, le résultat est true si la longueur de la
chaîne est supérieure à zéro et false pour une
chaîne vide.
Lorsque vous convertissez une chaîne en
valeur booléenne, la chaîne est tout d’abord
convertie en nombre. Le résultat est true si le
nombre n’est pas égal à zéro et false dans le
cas contraire.
Lorsque vous définissez la longueur d’un tableau,
seule une chaîne de nombre valide peut définir la
longueur. Par exemple, "6" fonctionne, et non " 6" ou
"6xyz".
mon_array=new Array();
mon_array[" 6"] ="x";
trace(mon_array.length); // 0
mon_array["6xyz"] ="x";
trace(mon_array.length); // 0
mon_array["6"] ="x";
trace(mon_array.length); // 7
Lorsque vous définissez la longueur d’un
tableau, même une chaîne de nombre mal
formulée peut définir la longueur :
mon_array=new Array();
mon_array[" 6"] ="x";
trace(mon_array.length); // 7
mon_array["6xyz"] ="x";
trace(mon_array.length); // 7
mon_array["6"] ="x";
trace(mon_array.length); // 7
Fichier SWF publié pour Flash Player 7 Fichier SWF publié pour des versions
précédentes de Flash Player20 Chapitre 1 : Nouveautés de Flash MX 2004 ActionScript
Dans les fichiers publiés pour Flash Player 5 ou une version ultérieure, l’accès aux inter-domaines
et sous-domaines n’était soumis à aucune restriction.
Dans les fichiers publiés pour Flash Player 6, vous pouviez utiliser le gestionnaire
LocalConnection.allowDomain ou la méthode System.security.allowDomain() pour
spécifier l’accès inter-domaines autorisé (par exemple pour autoriser l’accès à un fichier situé sur
unSite.com par un fichier situé sur unAutreSite.com). Aucune commande n’était nécessaire pour
autoriser l’accès au superdomaine (par exemple, un fichier situé sur store.unSite.com pouvait
accéder à un fichier situé sur www.unSite.com).
Les fichiers publiés pour Flash Player 7 implémentent l’accès entre les fichiers SWF différemment
des versions précédentes, et ce de deux manières : tout d’abord, Flash Player 7 implémente les
règles de correspondance exacte de domaine et non les règles de correspondance de superdomaine.
Ainsi, le fichier auquel on accède (même s’il est publié pour une version antérieure à Flash
Player 7) doit autoriser de façon explicite l’accès aux inter-domaines et sous-domaines. Ce sujet
est abordé plus bas. Ensuite, un fichier hébergé sur un site qui utilise un protocole sécurisé
(HTTPS) doit autoriser de façon explicite l’accès à partir d’un fichier hébergé sur un site utilisant
un protocole non sécurisé (HTTP ou FTP). Ce sujet est abordé dans la section suivante
(consultez Accès du protocole HTTP vers le protocole HTTPS entre les fichiers SWF , page 21).
Etant donné que Flash Player 7 implémente les règles de correspondance exacte de domaine et
non les règles de correspondance de superdomaine, il peut être nécessaire de modifier les scripts
existants si vous souhaitez y accéder à partir de fichiers publiés pour Flash Player 7. (Vous pouvez
toujours publier les fichiers modifiés pour Flash Player 6.) Si vous avez utilisé une instruction
LocalConnection.allowDomain() ou System.security.allowDomain() dans vos fichiers et
que vous avez spécifié des sites de superdomaine à autoriser, vous devez modifier vos paramètres
pour spécifier les domaines exacts à la place. Le code suivant présente un exemple des types de
modifications qu’il peut être nécessaire d’apporter :
// commandes Flash Player 6 d’un fichier SWF situé sur www.unAncienSite.com
// pour autoriser l’accès par des fichiers SWF hébergés sur www.unSite.com
// ou sur store.unSite.com
System.security.allowDomain("unSite.com");
mon_lc.allowDomain = function(domaineDenvoi) {
return(domaineDenvoi=="unSite.com");
}
// Commandes correspondantes pour autoriser l’accès par les fichiers SWF
// qui sont publiés pour Flash Player 7
System.security.allowDomain("www.unSite.com", "store.unSite.com");
mon_lc.allowDomain = function(domaineDenvoi) {
return(domaineDenvoi=="www.unSite.com" ||
domaineDenvoi=="store.unSite.com");
}
Il peut également être nécessaire d’ajouter des instructions similaires dans vos fichiers si vous ne
les utilisez pas actuellement. Par exemple, si votre fichier SWF est hébergé sur www.unSite.com et
que vous souhaitez autoriser l’accès par un fichier SWF publié pour Flash Player 7 sur
store.unSite.com, vous devez ajouter des instructions semblables aux instructions suivantes au
fichier situé sur www.unSite.com (vous pouvez toujours publier le fichier situé sur
www.unSite.com pour Flash Player 6) :
System.security.allowDomain("store.unSite.com");
mon_lc.allowDomain = function(domaineDenvoi) {
return(domaineDenvoi=="store.unSite.com");
}Portage de scripts existants sur Flash Player 7 21
Pour résumer, il peut être nécessaire de modifier vos fichiers pour ajouter ou modifier des
instructions allowDomain si vous publiez des fichiers pour Flash Player 7 dans les conditions
suivantes :
• Vous avez implémenté des scripts entre des fichiers SWF (à l’aide de loadMovie(),
MovieClip.loadMovie(), MovieClipLoader.LoadClip(), ou d’objets Local Connection).
• Le fichier SWF appelé (de n’importe quelle version) n’est pas hébergé sur un site utilisant un
protocole sécurisé (HTTPS), ou le fichier SWF appelé et celui effectuant l’appel sont tous deux
hébergés sur des sites HTTPS (si seul le fichier SWF appelé est HTTPS, consultez Accès du
protocole HTTP vers le protocole HTTPS entre les fichiers SWF , page 21).
• Les fichiers SWF ne se trouvent pas dans le même domaine (par exemple, l’un d’eux réside sur
www.domaine.com et l’autre sur store.domaine.com).
Vous devez effectuer les modifications suivantes :
• Si le fichier SWF appelé est publié pour Flash Player 7, incluez
System.security.allowDomain ou LocalConnection.allowDomain dans le fichier SWF
appelé, en utilisant la correspondance exacte de domaine.
• Si le fichier SWF appelé est publié pour Flash Player 6, modifiez-le en ajoutant ou en
modifiant une instruction System.security.allowDomain ou
LocalConnection.allowDomain, en utilisant la correspondance exacte de domaine, comme
illustré dans les exemples de code plus haut dans cette section. Vous pouvez publier le fichier
modifié pour flash Player 6 ou 7.
• Si le fichier SWF appelé est publié pour Flash Player 5 ou version antérieure, portez le fichier
appelé sur Flash Player 6 ou 7 et ajoutez une instruction System.security.allowDomain en
utilisant la correspondance exacte de domaine, comme illustré dans les exemples de code plus
haut dans cette section. (Les objets LocalConnection ne sont pas supportés dans Flash Player 5
ou version antérieure.)
Accès du protocole HTTP vers le protocole HTTPS entre les fichiers SWF
Comme nous l’avons vu dans la section précédente, les règles d’accès aux inter-domaines et sous-
domaines ont été modifiées dans Flash Player 7. En plus des règles de correspondance exacte de
domaine dorénavant implémentées, vous devez autoriser de façon explicite l’accès aux fichiers
situés sur des sites utilisant un protocole sécurisé (HTTPS) par des fichiers hébergés sur des sites
utilisant des protocoles non sécurisés. Selon que votre fichier est publié pour Flash Player 7 ou
Flash Player 6, vous devez implémenter l’une des deux instructions allowDomain (consultez Accès
aux inter-domaines et sous-domaines entre des fichiers SWF , page 19), ou utiliser les nouvelles
instructions LocalConnection.allowInsecure Domain ou
System.security.allowInsecureDomain().
Avertissement : L’implémentation d’une instruction allowInsecureDomain() compromet la
sécurité assurée par le protocole HTTPS. Vous devez effectuer ces modifications uniquement si
vous ne pouvez pas réorganiser votre site de manière à ce que tous les fichiers SWF soient servis par
le protocole HTTPS.
Le code suivant présente un exemple des types de modifications qu’il peut être nécessaire
d’apporter :
// Commandes dans un fichier SWF Flash Player 6 situé sur https://
www.unSite.com
// pour autoriser l’accès par des fichiers SWF Flash Player 7 hébergés
// sur http://www.unSite.com ou http://www.unAutreSite.com22 Chapitre 1 : Nouveautés de Flash MX 2004 ActionScript
System.security.allowDomain("unAutreSite.com");
mon_lc.allowDomain = function(domaineDenvoi) {
return(domaineDenvoi=="unAutreSite.com");
}
// Commandes correspondantes dans un fichier SWF Flash Player 7
// pour autoriser l’accès par des fichiers SWF Flash Player 7 hébergés
// sur http://www.unSite.com ou http://www.unAutreSite.com
System.security.allowInsecureDomain("www.unSite.com", "www.unAutreSite.com");
mon_lc.allowInsecureDomain = function(domaineDenvoi) {
return(domaineDenvoi=="www.unSite.com" ||
domaineDenvoi=="www.unAutreSite.com");
}
Il peut également être nécessaire d’ajouter des instructions similaires dans vos fichiers si vous ne
les utilisez pas actuellement. Une modification peut s’avérer nécessaire même si les deux fichiers
résident dans le même domaine (par exemple, un fichier situé sur http://www.domaine.com
appelle un fichier situé sur https://www.domaine.com).
Pour résumer, il peut être nécessaire de modifier vos fichiers pour ajouter ou modifier des
instructions si vous publiez des fichiers pour Flash Player 7 qui correspondent aux critères
suivants :
• Vous avez implémenté des scripts entre des fichiers SWF (à l’aide de loadMovie(),
MovieClip.loadMovie(), MovieClipLoader.LoadClip() ou d’objets Local Connection).
• Le fichier effectuant l’appel n’est pas hébergé à l’aide d’un protocole HTTPS et le fichier appelé
est HTTPS.
Vous devez effectuer les modifications suivantes :
• Si le fichier appelé est publié pour Flash Player 7, incluez l’instruction
System.security.allowInsecureDomain ou LocalConnection.allowInsecureDomain
dans le fichier appelé en utilisant la correspondance exacte de domaine, comme illustré dans les
exemples de code, plus haut dans cette section. Cette instruction est requise même lorsque le
fichier SWF appelé et celui effectuant l’appel se trouvent sur le même domaine.
• Si le fichier appelé est publié pour Flash Player 6 ou une version antérieure, et que le fichier
effectuant l’appel et le fichier appelé résident dans le même domaine (par exemple, si un fichier
sur http://www.domaine.com appelle un fichier situé sur https://www.domaine.com), aucune
modification n’est nécessaire.
• Si le fichier appelé est publié pour Flash Player 6, que les fichiers ne se trouvent pas sur le
même domaine, et que vous ne souhaitez pas porter le fichier appelé sur Flash Player 7,
modifiez le fichier appelé en ajoutant ou en modifiant une instruction
System.security.allowDomain ou LocalConnection.allowDomain en utilisant la
correspondance exacte de domaine, comme illustré dans les exemples de code plus haut dans
cette section.
• Si le fichier appelé est publié pour Flash Player 6 et que vous souhaitez le porter sur Flash
Player 7, incluez System.security.allowInsecureDomain ou
LocalConnection.allowInsecureDomain dans le fichier appelé en utilisant la
correspondance exacte de domaine, comme illustré dans les exemples de code, plus haut dans
cette section. Cette instruction est requise même si les deux fichiers se trouvent dans le même
domaine. Modifications de l’éditeur ActionScript 23
• Si le fichier appelé est publié pour Flash Player 5 ou une version antérieure et que les deux
fichiers ne se trouvent pas sur le même domaine, vous pouvez procéder de l’une des deux
manières suivantes. Vous pouvez soit porter le fichier appelé sur Flash Player 6 et ajouter ou
modifier une instruction System.security.allowDomain en utilisant la correspondance
exacte de domaine, soit porter le fichier appelé sur Flash Player 7, et inclure une instruction
System.security.allowInsecureDomain dans le fichier appelé en utilisant le filtrage de
domaine, comme illustré dans les exemples de code, plus haut dans cette section.
Fichiers de régulation côté serveur pour autoriser l’accès aux données
Un document Flash peut charger les données depuis une source externe à l’aide de l’un des appels
de chargement de données suivants : XML.load(), XML.sendAndLoad(), LoadVars.load(),
LoadVars.sendAndLoad(), loadVariables(), loadVariablesNum(),
MovieClip.loadVariables(), XMLSocket.connect() et Macromedia Flash Remoting
(NetServices.createGatewayConnection). De plus, un fichier SWF peut importer des
bibliothèques partagées à l’exécution (RSL) ou des actifs définis dans un autre fichier SWF, au
moment de l’exécution. Par défaut, les données ou le support RSL doivent se trouver sur le même
domaine que le fichier SWF qui charge ces données externes ou ce support.
Pour que les fichiers SWF situés dans différents domaines puissent accéder aux données et aux
actifs contenus dans des bibliothèques partagées à l’exécution, utilisez un fichier de régulation
inter-domaines. Il s’agit d’un fichier XML qui permet au serveur d’indiquer que ses données et ses
documents sont disponibles pour les fichiers SWF servis par certains domaines ou par tous les
domaines. Tout fichier SWF servi par un domaine spécifié par le fichier de régulation du serveur
peut accéder aux données et aux RSL de ce serveur.
Si vous chargez des données externes, il est conseillé de créer des fichiers de régulation même si
vous ne projetez pas de porter vos fichiers sur Flash Player 7. Si vous utilisez des bibliothèques
partagées à l’exécution (RSL), il est conseillé de créer des fichiers de régulation si le fichier appelé
ou le fichier effectuant l’appel est publié pour Flash Player 7.
Pour plus d’informations, consultez A propos de l’autorisation de chargement de données inter-
domaines, page 198.
Modifications de l’éditeur ActionScript
L’éditeur ActionScript a subi différentes mises à jour afin d’être plus robuste et plus simple à
utiliser. Cette section récapitule toutes ces modifications.
Retour automatique à la ligne Pour activer ou désactiver le retour automatique à la ligne, vous
pouvez désormais utiliser le menu d’options de la fenêtre de script, du panneau Débogueur et du
panneau de sortie. Vous pouvez également l’activer ou le désactiver à l’aide du menu déroulant du
panneau Actions. Le raccourci clavier est Ctrl+Maj+W (Windows) ou Commande+Maj+W
(Macintosh).
Affichage de l’aide contextuelle Lorsque vous positionnez votre pointeur sur un élément du
langage ActionScript dans la boîte à outils Actions ou dans la fenêtre de script, vous pouvez
utiliser l’option Afficher l’aide du menu contextuel pour afficher une page d’aide concernant cet
élément.24 Chapitre 1 : Nouveautés de Flash MX 2004 ActionScript
Importation de scripts Lorsque vous sélectionnez Importer le script dans le menu déroulant du
panneau Actions, le script importé est copié dans le script à l’emplacement du point d’insertion
dans votre fichier code. Dans les versions antérieures de Flash, l’importation d’un script écrasait le
contenu du script existant.
Points d’arrêt en un clic Pour ajouter un point d’arrêt de débogage devant une ligne de code
dans les panneaux Débogueur, Script ou Actions, vous pouvez cliquer dans la marge de gauche.
Dans les versions antérieures de Flash, le fait de cliquer dans la marge de gauche sélectionnait une
ligne de code. La nouvelle façon de sélectionner une ligne de code consiste à cliquer en appuyant
sur Ctrl (Windows) ou à cliquer en appuyant sur Commande (Macintosh).
Modes normal et expert ne figurant plus dans le panneau Actions Dans les versions
antérieures de Flash, vous pouviez travailler dans le panneau Actions soit en mode normal, dans
lequel vous complétiez des options et des paramètres pour créer du code, soit en mode expert,
dans lequel vous ajoutiez des commandes directement dans la fenêtre de script. Dans Flash
MX 2004 et Flash MX Professionnel 2004, vous pouvez uniquement travailler dans le panneau
Actions en ajoutant des commandes directement dans la fenêtre de script. Vous pouvez toujours
faire glisser des commandes de la boîte à outils Actions vers la fenêtre de script ou utiliser le
bouton Ajouter (+) situé au-dessus de la fenêtre de script pour ajouter des commandes à un script.
Verrouillage de plusieurs scripts Vous pouvez verrouiller plusieurs scripts figurant dans un
fichier FLA le long du bord inférieur de la fenêtre de script dans le panneau Actions. Dans les
versions précédentes de Flash, vous ne pouviez verrouiller qu’un seul script à la fois.
Navigateur de script La partie gauche du panneau Actions contient désormais deux panneaux :
la boîte à outils Actions et un nouveau navigateur de script. Le navigateur de script est une
représentation visuelle de la structure de votre fichier FLA ; il vous permet de parcourir votre
fichier FLA pour localiser le code ActionScript.
Fenêtre de script intégrée pour la modification de fichiers externes (Flash Professionnel
uniquement) Vous pouvez utiliser l’éditeur ActionScript dans une fenêtre de script (distincte du
panneau Actions) pour écrire et modifier des fichiers scripts externes. La coloration de la syntaxe,
les conseils de code et d’autres préférences sont supportés dans la fenêtre de script. La boîte à
outils Actions y est également disponible. Pour afficher la fenêtre de script, cliquez sur Fichier >
Nouveau, puis sélectionnez le type de fichier externe à modifier. Vous pouvez ouvrir plusieurs
fichiers externes simultanément ; les noms de fichier s’affichent alors sur des onglets en haut de la
fenêtre de script. Cette fonction est uniquement disponible sous Windows.
Modifications de débogage
Cette section décrit les modifications permettant d’améliorer votre capacité à déboguer vos
scripts.
Fenêtre Sortie changée en panneau de sortie Vous pouvez désormais déplacer et ancrer le
panneau de sortie de la même manière que n’importe quel autre panneau dans Flash.
Amélioration de la signalisation des erreurs au moment de la compilation ActionScript 2.0
fournit non seulement une gestion des exceptions plus robuste, mais il propose également
plusieurs nouvelles erreurs de compilation. Pour plus d’informations, consultez
Annexe A, Messages d’erreur, page 773.
Amélioration de la gestion des exeptions La classe Error et les commandes throw et
try..catch..finally vous permettent d’implémenter une gestion des exceptions plus robuste.Nouveau modèle de programmation orientée objet 25
Nouveau modèle de programmation orientée objet
Depuis son introduction il y a quelques années de cela, le langage ActionScript n’a cessé de se
développer. A chaque nouvelle version de Flash, de nouveaux mots-clés, objets, méthodes et autres
éléments de langage sont ajoutés. Cependant, contrairement aux versions antérieures de Flash,
Flash MX 2004 et Flash MX Professionnel 2004 présentent plusieurs nouveaux éléments de
langage qui renforcent sa standardisation selon le modèle de programmation orientée objet. Ces
éléments de langage constituent une amélioration significative du langage ActionScript de base et
représentent donc une nouvelle version d’ActionScript lui-même : ActionScript 2.0.
ActionScript 2.0 n’est pas un nouveau langage. Il s’agit plutôt d’un ensemble d’éléments de
langage de base qui simplifient le développement de programmes orientés objet. L’introduction de
mots-clés tels que class, interface, extends et implements facilite l’apprentissage de la
syntaxe ActionScript aux programmeurs habitués à d’autres langages. Les nouveaux
programmeurs apprennent ainsi une terminologie standard applicable à d’autres langages orientés
objet qu’ils étudieront sans doute ultérieurement.
ActionScript 2.0 supporte tous les éléments standard du langage ActionScript. Il vous permet
simplement d’écrire des scripts plus conformes aux normes utilisées dans d’autres langages
orientés objet, tels que Java. ActionScript 2.0 intéressera principalement les développeurs Flash de
niveau intermédiaire ou avancé qui créent des applications nécessitant l’implémentation de classes
et de sous-classes. ActionScript 2.0 vous permet également de déclarer le type d’objet d’une
variable au moment de sa création (consultez Typage strict des données, page 40) et améliore
considérablement les erreurs de compilateur (consultez l’Annexe A, Messages d’erreur, page 773 ).
Les nouveaux éléments d’ActionScript 2.0 sont répertoriés ci-dessous.
• classe
• extends
• implements
• interface
• dynamic
• static
• public
• private
• get
• set
• import
Les principaux points à connaître sur ActionScript 2,0 sont les suivants :
• Les scripts utilisant ActionScript 2.0 pour définir des interfaces doivent être enregistrés en tant
que fichiers scripts externes, avec une seule classe définie dans chaque script. Cela implique que
les classes et les interfaces ne peuvent pas être définies dans le panneau Actions.
• Vous pouvez importer des fichiers de classe individuels de façon implicite (en les enregistrant
dans un emplacement spécifié par des chemins de recherche généraux ou spécifiques à des
documents et en les utilisant dans un script) ou de façon explicite (en utilisant la commande
import). Vous pouvez importer des ensembles de fichiers (ensembles de fichiers de classe dans
un répertoire) en utilisant des caractères génériques.26 Chapitre 1 : Nouveautés de Flash MX 2004 ActionScript
• Les applications développées à l’aide d’ActionScript 2.0 sont supportées par Flash Player 6 et
les versions ultérieures.
Attention : Le paramètre de publication par défaut des nouveaux fichiers créés dans FlashMX 2004
est ActionScript 2.0. Si vous projetez de modifier un fichier FLA existant pour utiliser la syntaxe
ActionScript 2.0, vérifiez que le fichier FLA spécifie bien ActionScript 2.0 dans ses paramètres de
publication. Si ce n’est pas le cas, votre fichier ne sera pas compilé correctement, même si Flash ne
génère pas d’erreurs de compilateur.
Pour plus d’informations sur l’utilisation d’ActionScript 2.0 pour l’écriture de programmes
orientés objet en Flash, consultez le Chapitre 9, Création de classes avec ActionScript 2.0, page 161. 27
CHAPITRE 2
Notions de base du langage ActionScript
ActionScript possède des règles de grammaire et de ponctuation qui déterminent les caractères ou
les mots porteurs de sens et l’ordre dans lequel ils peuvent être rédigés. Par exemple, en français,
un point termine une phrase. Dans ActionScript, c’est un point-virgule qui termine une
instruction.
Les règles générales suivantes s’appliquent à tous les scripts ActionScript. La plupart des termes
ActionScript font également l’objet de règles individuelles ; pour en savoir plus sur les règles qui
s’appliquent à un terme déterminé, consultez l’entrée correspondante dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Différences entre ActionScript et JavaScript
ActionScript est similaire au langage de programmation JavaScript. La connaissance de JavaScript
n’est pas indispensable pour apprendre à utiliser ActionScript. Toutefois, si vous connaissez
JavaScript, ActionScript vous semblera familier.
Cet ouvrage n’a pas pour but d’enseigner la programmation générale. Il existe de nombreuses
sources qui fournissent des informations complémentaires sur les concepts de programmation
généraux et sur le langage JavaScript.
• L’ECMA (European Computers Manufacturers Association) a établi la spécification ECMA-
262, dérivée du langage JavaScript, qui sert de norme internationale pour le langage JavaScript.
ActionScript est basé sur la spécification ECMA-262.
• Netscape DevEdge Online offre un centre de développement JavaScript (http://
developer.netscape.com/tech/javascript/index.html) qui contient de la documentation et des
articles utiles à la compréhension d’ActionScript. La ressource la plus importante est le Core
JavaScript Guide.
Les principales différences qui existent entre ActionScript et JavaScript sont les suivantes :
• ActionScript ne supporte pas les objets spécifiques aux navigateurs que sont les documents,
fenêtres et ancres, par exemple.
• ActionScript ne supporte pas entièrement tous les objets JavaScript intégrés.
• ActionScript ne supporte pas certaines constructions syntaxiques JavaScript, telles que les
étiquettes d’instructions.
• Dans ActionScript, l’action eval() ne peut effectuer que des références aux variables.28 Chapitre 2 : Notions de base du langage ActionScript
Support du format Unicode pour ActionScript
Macromedia Flash MX 2004 et Macromedia Flash MX Professionnel 2004 prennent en charge le
codage du texte au format Unicode pour ActionScript. Vous pouvez donc intégrer du texte en
différentes langues dans un même fichier ActionScript. Vous pouvez par exemple intégrer du texte
en anglais, en japonais et en français dans un même fichier.
Vous pouvez définir les préférences d’ActionScript afin de spécifier le type de codage à utiliser lors
de l’importation ou de l’exportation de fichiers ActionScript. Vous avez le choix entre le codage
UTF-8 ou le codage par défaut. UTF-8 est le format Unicode 8 bits. Le codage par défaut, ou
page de code classique, est le codage pris en charge par la langue utilisée actuellement sur votre
système.
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
#2 20-08-2008 15:58:05
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Re: Guide de référence sur l'action script de flash
En règle générale, si vous importez ou exportez des fichiers ActionScript au format UTF-8,
choisissez UTF-8. Si vous importez ou exportez des fichiers dans la page de code classique de
votre système, choisissez Codage par défaut comme préférence.
Si le texte que contiennent vos scripts ne s’affiche pas correctement lorsque vous ouvrez ou
importez un fichier, modifiez la préférence de codage pour l’importation. Si vous obtenez un
avertissement lors de l’exportation de fichiers ActionScript, vous pouvez modifier la préférence de
codage pour l’exportation ou désactiver l’affichage de cet avertissement dans les préférences
ActionScript.
Pour choisir des options de codage de texte pour l’importation ou l’exportation de fichiers
ActionScript :
1 Dans la boîte de dialogue Préférences (Modifier > Préférences), cliquez sur l’onglet
ActionScript.
2 Dans la section Options d’édition, effectuez au moins une des actions suivantes :
■ Pour l’option Ouvrir/Importer, choisissez UTF-8 pour ouvrir ou importer en utilisant le
codage Unicode, ou choisissez Codage par défaut pour ouvrir ou importer en utilisant le
format de codage de la langue de votre système actuel.
■ Pour l’option Enregistrer/Exporter, choisissez UTF-8 pour enregistrer ou exporter en
utilisant le codage Unicode, ou choisissez Codage par défaut pour enregistrer ou exporter en
utilisant le format de codage de la langue de votre système actuel.
Pour activer ou désactiver le message d’avertissement de codage d’exportation :
1 Dans la boîte de dialogue Préférences (Edition > Préférences), cliquez sur l’onglet
Avertissements.
2 Activez ou désactivez l’option Avertir des conflits de codage pendant l’exportation de fichiers .as.
Attention : La commande Tester l’animation (consultez Débogage de scripts, page 71) échoue si une
partie du chemin du fichier SWF contient des caractères ne pouvant pas être représentés à l’aide du
système de codage MBCS. Par exemple, les chemins japonais dans un système anglais ne
fonctionnent pas. Toutes les zones de l’application utilisant le lecteur externe sont soumises à cette
restriction.
Terminologie
A l’instar de tout langage de programmation, ActionScript utilise une terminologie qui lui est
propre. La liste suivante présente les principaux termes ActionScript. Terminologie 29
Les actions sont des instructions qui ordonnent à un fichier SWF d’exécuter une opération
déterminée lors de sa lecture. Par exemple, gotoAndStop() envoie la tête de lecture à une image
ou une étiquette spécifique. Dans cet ouvrage, les termes action et instruction sont
interchangeables.
Une valeur booléenne est une valeur true (vraie) ou false (fausse).
Les classes sont des types de données que vous pouvez créer pour définir un nouveau type
d’objet. Pour définir une classe, utilisez le mot-clé class dans un fichier de script externe (et non
dans le script en cours de rédaction dans le panneau Actions).
Les constantes sont des éléments qui ne changent pas. Par exemple, la constante Key.TAB a
toujours la même signification : elle indique la touche Tab du clavier. Les constantes sont utiles
pour comparer des valeurs.
Les constructeurs sont des fonctions que vous utilisez pour définir les propriétés et les méthodes
d’une classe. Par définition, les constructeurs sont des fonctions au sein d’une définition de classe
qui portent le même nom que la classe. Par exemple, le code suivant définit une classe « Cercle »
et implémente une fonction constructeur :
// fichier Circle.as
class Circle {
private var radius:Number
private var circumference:Number
// constructeur
function Circle(radius:Number) {
circumference = 2 * Math.PI * radius;
}
}
Le terme constructeur est également utilisé lorsque vous créez (instanciez) un objet en fonction
d’une classe particulière. Les instructions suivantes sont des constructeurs pour la classe « Array »
intégrée et pour la classe « Circle » personnalisée :
mon_array:Array = new Array();
mon_circle:Circle = new Circle();
Les types de données décrivent le genre d’informations qu’une variable ou qu’un élément
ActionScript peut contenir. Les types de données ActionScript sont les suivants : String, Number,
Boolean, Object, MovieClip, Function, Null et Undefined. Pour plus d’informations, consultez
A propos des types de données, page 36.
Les événements sont des actions qui se produisent lors de la lecture d’un fichier SWF. Par
exemple, différents événements sont générés lorsqu’un clip est chargé, que la tête de lecture entre
dans une image, que l’utilisateur clique sur un bouton ou clip ou qu’il tape sur le clavier.
Les gestionnaires d’événement sont des actions spéciales qui gèrent les événements tels que
mouseDown ou load. Il existe deux sortes de gestionnaires d’événement ActionScript : les
méthodes de gestionnaire d’événement et les écouteurs d’événement. (Il existe également deux
gestionnaires d’événement, on() et onClipEvent(), que vous pouvez affecter directement aux
boutons et aux clips.) Dans la boîte à outils Actions, chaque objet ActionScript qui possède des
méthodes de gestionnaire d’événement ou des écouteurs d’événement est associé à une sous-
catégorie appelée Evénements ou Ecouteurs. Certaines commandes, qui peuvent être utilisées à la
fois en tant que gestionnaires d’événement et écouteurs d’événement, sont incluses dans les deux
sous-catégories. 30 Chapitre 2 : Notions de base du langage ActionScript
Une expression est toute combinaison légale de symboles ActionScript qui représentent une
valeur. Une expression se compose d’opérateurs et d’opérandes. Par exemple, dans l’expression x +
2, x et 2 sont des opérandes et + est un opérateur.
Les fonctions sont des blocs de code réutilisables qui peuvent recevoir des paramètres et renvoyer
une valeur. Pour plus d’informations, consultez Création de fonctions, page 53.
Les identifiants sont des noms utilisés pour indiquer une variable, une propriété, un objet, une
fonction ou une méthode. Le premier caractère doit être une lettre, un trait de soulignement (_)
ou un dollar ($). Chaque caractère qui suit doit être une lettre, un chiffre, un trait de
soulignement ou un dollar. Par exemple, prénom est le nom d’une variable.
Les occurrences sont des objets qui appartiennent à une certaine classe. Chaque occurrence
d’une classe contient toutes les propriétés et les méthodes de cette classe. Par exemple, tous les
clips sont des occurrences de la classe MovieClip, vous pouvez alors utiliser n’importe quelle
méthode ou propriété de la classe MovieClip avec n’importe quelle occurrence de clip.
Les noms d’occurrence sont des noms uniques qui vous permettent de cibler des occurrences de
clip et de bouton dans les scripts. L’inspecteur des propriétés permet d’affecter des noms aux
occurrences présentes sur la scène. Par exemple, un symbole principal de la bibliothèque pourrait
s’appeler compteur et les deux occurrences de ce symbole dans le fichier SWF pourraient avoir
comme noms d’occurrence scoreJoueur1_mc et scoreJoueur2_mc. Le code suivant définit une
variable appelée score à l’intérieur de chaque occurrence de clip en utilisant le nom des
occurrences :
_root.scorePlayer1_mc.score += 1;
_root.scorePlayer2_mc.score -= 1;
Vous pouvez utiliser des suffixes spéciaux lors de l’affectation d’un nom à une occurrence, afin que
des conseils de code (consultez Utilisation de conseils de code, page 66) s’affichent lorsque vous
tapez du code. Pour plus d’informations, consultez Utilisation de suffixes pour déclencher des
conseils de code, page 64.
Les mots-clés sont des mots réservés avec une signification particulière. Par exemple, var est un
mot-clé utilisé pour déclarer des variables locales. Vous ne pouvez pas utiliser un mot-clé comme
identificateur. Par exemple, var n’est pas un nom de variable légal. Pour obtenir une liste des
mots-clés, consultez Mots-clés, page 35.
Les méthodes sont des fonctions associées à une classe. Par exemple, getBytesLoaded() est une
méthode intégrée associée à la classe MovieClip. Vous pouvez aussi créer des fonctions qui agissent
ensuite comme des méthodes pour les objets basés sur les classes intégrées ou sur les classes que
vous créez. Par exemple, dans le code suivant, clear() devient une méthode d’un objet
contrôleur que vous avez précédemment défini :
function reset(){
this.x_pos = 0;
this.x_pos = 0;
}
contrôleur.clear = reset;
contrôleur.clear();
Les objets sont des groupes de propriétés et méthodes, chaque objet ayant son propre nom et
étant une occurrence d’une classe particulière. Les objets intégrés sont prédéfinis dans le langage
ActionScript. Par exemple, l’objet intégré Date fournit des informations provenant de l’horloge
système. Syntaxe 31
Les opérateurs sont des termes qui calculent une nouvelle valeur à partir d’une ou de plusieurs
valeurs. Par exemple, l’opérateur d’addition (+) additionne deux ou plusieurs valeurs pour en
obtenir une nouvelle. Les valeurs manipulées par les opérateurs sont appelées opérandes.
Les paramètres, également appelés arguments, sont des espaces réservés qui vous permettent de
transmettre des valeurs aux fonctions. Par exemple, la fonction bienvenue() suivante, utilise
deux valeurs qu’elle reçoit dans les paramètres prénom et hobby :
function bienvenue(prénom, hobby) {
texteDeBienvenue = "Bonjour " + prénom + "Votre hobby est : " + hobby;
}
Les paquets sont des répertoires qui contiennent un ou plusieurs fichiers de classe et résident
dans un répertoire de chemin de classe désigné (consultez Compréhension du chemin de classe,
page 175).
Les propriétés sont des attributs qui définissent un objet. Par exemple, _visible est une
propriété de tous les clips qui définit si ceux-ci sont visibles ou masqués.
Les chemins cibles sont des adresses hiérarchiques de noms d’occurrences de clips, de variables et
d’objets d’un fichier SWF. Les occurrences de clips sont nommées dans l’inspecteur des propriétés
des clips correspondants. Le scénario principal porte toujours le nom _root. Vous pouvez utiliser
un chemin cible pour réaliser une action sur un clip ou pour obtenir ou définir la valeur d’une
variable. Par exemple, l’instruction suivante est le chemin cible de la variable volume dans le clip
contrôleStéréo :
_root.contrôleStéréo.volume
Pour plus d’informations sur les chemins cibles, consultez Chemins cibles absolus et relatifs dans le
guide Utilisation de Flash de l’aide.
Les variables sont des identifiants qui contiennent des valeurs de n’importe quel type de données.
Les variables peuvent être créées, modifiées et mise à jour. Vous pouvez récupérer les valeurs
qu’elles contiennent et les utiliser dans des scripts. Dans l’exemple suivant, les identifiants situés à
gauche du signe égal sont des variables :
var x = 5;
var name = "Lolo";
var c_color = new Color(mcinstanceName);
Pour plus d’informations sur les variables, consultez A propos des variables, page 43.
Syntaxe
Comme dans tout langage, ActionScript implique des règles syntaxiques à respecter pour créer des
scripts pouvant être compilés et exécutés correctement. Cette section décrit les éléments de
syntaxe ActionScript.
Hauteur de casse
Dans un langage de programmation sensible à la casse, les noms de variable qui diffèrent
uniquement par leur casse (livre et Livre) ne sont pas considérés comme identiques. Par
conséquent, il est toujours judicieux d’employer les majuscules et les minuscules selon des
conventions fixes, comme celles utilisées dans cet ouvrage, car cela permet d’identifier plus
facilement les noms des fonctions et des variables dans le code ActionScript. 32 Chapitre 2 : Notions de base du langage ActionScript
Lorsque vous publiez des fichiers pour Flash Player 7 ou une version ultérieure, Flash implémente
la sensibilité à la casse que vous utilisiez ActionScript 1 ou ActionScript 2.0. Cela signifie que les
mots-clés, noms de classe, variables, noms de méthode etc. sont tous sensibles à la casse. Par
exemple :
// Dans un fichier ciblant Flash Player 7
// et dans ActionScript 1 ou ActionScript 2.0
//
// Définit les propriétés de deux objets différents
chat.hilite = true;
CHAT.hilite = true;
// Crée trois variables différentes
var maVar=10;
var mavar=10;
var mAvAr=10;
// Ne génère pas d’erreur
var tableau = new Array();
var date = new Date();
Cette modification a également des répercussions sur les variables externes chargées via
LoadVars.load().
En outre, la sensibilité à la casse est implémentée pour les scripts externes, tels que les scripts ou les
fichiers de classe ActionScript 2.0 que vous importez en utilisant la commande #include. Si vous
publiez des fichiers pour Flash Player 7 et avez préalablement créé des fichiers externes que vous
ajoutez à vos scripts via l’instruction #include, vous devez passer chacun d’eux en revue pour
vous assurer que la casse est correcte. Pour ce faire, ouvrez le fichier dans la Fenêtre de script (Flash
Professionnel uniquement) ou, dans un nouveau fichier FLA, réglez vos paramètres de
publication sur Flash Player 7 et copiez le contenu du fichier dans le panneau Actions. Utilisez
ensuite le bouton Vérifier la syntaxe (consultez Vérification de la syntaxe et de la ponctuation,
page 69) ou publiez votre fichier. Les erreurs dues à des conflits de noms sont signalées dans le
panneau de sortie.
Lorsque la coloration de la syntaxe est activée, les éléments du langage dont la casse est correcte
sont affichés en bleu par défaut. Pour plus d’informations, consultez Mots-clés, page 35, et Mise en
évidence de la syntaxe, page 63.
Syntaxe pointée
Dans ActionScript, un point (.) est utilisé pour indiquer les propriétés ou les méthodes associées
à un objet ou à un clip. Il est également utilisé pour identifier le chemin cible d’un clip, d’une
variable, d’une fonction ou d’un objet. Une expression en syntaxe à point commence par le nom
de l’objet ou du clip suivi d’un point et se termine par l’élément que vous souhaitez spécifier.
Par exemple, la propriété _x d’un clip indique la position sur l’axe x du clip sur la scène.
L’expression balleMC._x fait référence à la propriété _x de l’occurrence de clip balleMC.
Dans un autre exemple, envoyer est une variable définie dans le clip formulaire, qui est
imbriqué dans le clip panier. L’expression panier.formulaire.envoyer = true définit la
variable envoyer du formulaire de l’occurrence sur true.
L’expression d’une méthode d’un objet ou clip se fait selon le même schéma. Par exemple, la
méthode play() de l’occurrence de clip balle_mc déplace la tête de lecture dans le scénario de
balle_mc, comme indiqué dans l’instruction suivante :
balle_mc.play();Syntaxe 33
La syntaxe pointée utilise également deux alias spéciaux, _root et _parent. L’alias _root fait
référence au scénario principal. Vous pouvez utiliser l’alias _root pour créer un chemin cible
absolu. Par exemple, l’instruction suivante appelle la fonction constructPlateau() dans le clip
fonctions du scénario principal :
_root.fonctions.constructPlateau();
Vous pouvez utiliser l’alias _parent pour faire référence à un clip dans lequel est imbriqué l’objet
courant. Vous pouvez également utiliser _parent pour créer un chemin cible relatif. Par exemple,
si le clip chien_mc est imbriqué dans le clip animal_mc, l’instruction suivante de l’occurrence
chien_mc indique à animal_mc de s’arrêter :
_parent.stop();
Syntaxe à barre oblique
La syntaxe à barre oblique était utilisée dans Flash 3 et 4 pour indiquer le chemin cible d’un clip
ou d’une variable. Cette syntaxe est toujours supportée dans Flash Player 7, mais son utilisation
n’est pas recommandée. La syntaxe à barre oblique n’est pas supportée dans ActionScript 2.0.
Toutefois, si vous créez du contenu destiné spécialement à Flash Player 4, vous devrez utiliser la
syntaxe à barre oblique. Pour plus d’informations, consultez Utilisation de la syntaxe à barre
oblique, page 789.
Accolades
Les gestionnaires d’événement, les définitions de classe et les fonctions ActionScript sont
regroupés en blocs délimités par des accolades ({}). Vous pouvez placer l’accolade ouvrante sur la
même ligne que la déclaration ou sur la ligne suivante, comme illustré dans les exemples ci-
dessous. Pour améliorer la lisibilité du code, il est préférable de choisir un format et de s’y tenir.
//Gestionnaire d’événement
on (release) {
maDate = new Date();
moisCourant = maDate.getMonth();
}
on(release)
{
maDate = new Date();
moisCourant = maDate.getMonth();
}
// Classe
class Circle(radius) {
}
class Square(side)
{
}
//Fonction
circleArea = function(radius) {
return radius * radius * MATH.PI;
}
squareArea = function(side)
{
return side * side;
}34 Chapitre 2 : Notions de base du langage ActionScript
Vous pouvez contrôler qu’il ne manque pas d’accolades dans vos scripts ; consultez Vérification de
la syntaxe et de la ponctuation, page 69.
Points-virgules
Une instruction ActionScript se termine par un point-virgule (
, comme dans les exemples
suivants :
var colonne = dateTransmise.getDay();
var ligne = 0;
L’omission du point-virgule final n’empêche pas Flash de compiler le script correctement.
Cependant, l’emploi de points-virgules est une bonne habitude à prendre lors de la rédaction de
scripts.
Parenthèses
Lorsque vous définissez une fonction, placez les paramètres entre parenthèses :
function maFonction (nom, âge, lecteur){
// entrez votre code ici
}
Lorsque vous appelez une fonction, incluez tous les paramètres transmis à la fonction entre
parenthèses, comme suit :
maFonction ("Steve", 10, true);
Vous pouvez également utiliser les parenthèses pour supplanter l’ordre de priorité d’ActionScript
ou pour faciliter la lecture des instructions ActionScript. Pour plus d’informations, consultez
Priorité et associativité des opérateurs, page 47.
Les parenthèses servent également à évaluer une expression située à gauche d’un point dans la
syntaxe pointée. Par exemple, dans l’instruction suivante, les parenthèses obligent à l’évaluation de
new Color(this) et à la création d’un objet Color :
onClipEvent(enterFrame){
(new Color(this)).setRGB(0xffffff);
}
Si vous n’utilisez pas de parenthèses, vous devez ajouter une instruction pour évaluer l’expression :
onClipEvent(enterFrame){
maCouleur = new Color(this);
maCouleur.setRGB(0xffffff);
}
Vous pouvez contrôler qu’il ne manque pas de parenthèses dans vos scripts ; consultez Vérification
de la syntaxe et de la ponctuation, page 69.
Commentaires
Il est vivement recommandé d’utiliser des commentaires pour ajouter des notes aux scripts. Les
commentaires sont particulièrement utiles pour consigner vos intentions et transmettre des
informations à d’autres développeurs (si vous travaillez en équipe ou si vous fournissez des
échantillons). Même un script simple est plus facile à comprendre si vous l’annotez lors de sa
création.
Pour indiquer qu’une ligne ou portion de ligne est un commentaire, faites-la précéder de deux
barres obliques(//):Syntaxe 35
on (release) {
// créer un nouvel objet Date
maDate = new Date();
moisCourant = maDate.getMonth();
// convertir le chiffre du mois en son nom
nomDuMois = calcMois(moisCourant);
année = maDate.getFullYear();
dateDuJour = maDate.getDate();
}
Lorsque la coloration de la syntaxe est activée (consultez Mise en évidence de la syntaxe, page 63),
les commentaires apparaissent en gris, par défaut. Les commentaires peuvent avoir n’importe
quelle longueur sans que cela affecte la taille du fichier exporté. Ils ne suivent aucune règle de
syntaxe ou de mots-clés relative à ActionScript.
Si vous souhaitez appliquer un commentaire à une portion complète de script, intégrez-le dans un
bloc de commentaire plutôt que de devoir ajouter // au début de chaque ligne. Cette technique
est plus simple et plus pratique, surtout lorsque vous souhaitez tester uniquement certaines parties
d’un script en en commentant de grandes parties.
Pour créer un bloc de commentaire, entrez /* au début du commentaire, puis */ à la fin. Par
exemple, lorsque le script suivant est exécuté, le code intégré dans le bloc de commentaire n’est pas
exécuté :
// Le code ci-dessous est exécuté
var x:Number = 15;
var y:Number = 20;
// Le code ci-dessous ne s’exécute pas
/*
on (release) {
// créer un nouvel objet Date
maDate = new Date();
moisCourant = maDate.getMonth();
// convertir le chiffre du mois en son nom
nomDuMois = calcMois(moisCourant);
année = maDate.getFullYear();
dateDuJour = maDate.getDate();
}
*/
// Le code ci-dessous est exécuté
var nom:String = "Je m’appelle";
var âge:Number = 20;
Mots-clés
ActionScript réserve certains mots à des usages spécifiques au sein du langage et vous ne pouvez
pas vous en servir comme identifiants (noms de variable, de fonction, d’étiquette, etc.). Le tableau
suivant répertorie tous les mots-clés ActionScript :
break case classe continue
default delete dynamic else
extends for function get
if implements import in
instanceof interface intrinsic new
private public return set36 Chapitre 2 : Notions de base du langage ActionScript
Constantes
Une constante est une propriété dont la valeur ne varie jamais.
Par exemple, les constantes BACKSPACE, ENTER, QUOTE, RETURN, SPACE et TAB sont des propriétés
de l’objet Key et font référence aux touches du clavier. Pour savoir si un utilisateur appuie sur la
touche Entrée, vous pourriez utiliser l’instruction suivante :
if(Key.getCode() == Key.ENTER) {
alert = "Etes-vous prêt(e) ?";
controlMC.gotoAndStop(5);
}
A propos des types de données
Un type de données décrit le genre d’informations qu’une variable ou qu’un élément ActionScript
peut contenir. Il existe deux sortes de types de données intégrées dans Flash : primitives et de
référence. Les données primitives (chaîne, nombre et booléen) ont une valeur constante et
peuvent donc contenir la valeur réelle de l’élément qu’elles représentent. Les données de référence
(clip et objet) possèdent des valeurs qui peuvent changer et contiennent donc des références à la
valeur réelle de l’élément. Les variables contenant des données primitives ont un comportement
différent de celles contenant des références dans certaines situations. Pour plus d’informations,
consultez Utilisation des variables dans un programme, page 45. Il existe également deux types
spéciaux de données : null et undefined.
Dans Flash, tout objet intégré qui n’est pas une donnée primitive, ni une donnée de clip, telle que
Array ou Math, est une donnée d’objet.
Chaque type de données possède ses propres règles et est décrit sous les rubriques suivantes :
• String, page 37
• Number, page 37
• Boolean, page 38
• Objet, page 38
• MovieClip, page 38
• Null, page 39
• Undefined, page 39
Lorsque vous déboguez des scripts, vous pouvez avoir besoin de déterminer le type de données
d’une expression ou d’une variable pour comprendre pourquoi elle se comporte de telle manière.
Vous pouvez effectuer cette opération avec l’opérateur typeof (consultez Définition du type de
données d’un objet, page 39).
Vous pouvez convertir un type de données en un type différent en utilisant l’une des fonctions de
conversion suivantes : Array(), Boolean(), Number, Objet(), String.
static switch this typeof
var void while withA propos des types de données 37
String
Une chaîne est une séquence de caractères (lettres, chiffres et signes de ponctuation, par exemple).
Vous insérez des chaînes dans une instruction ActionScript en les plaçant entre des guillemets
droits simples ou doubles. Les chaînes sont traitées comme des caractères et non comme des
variables. Par exemple, dans l’instruction suivante, "L7" est une chaîne :
groupePréféré = "L7";
Vous pouvez utiliser l’opérateur d’addition (+) pour concaténer, ou joindre, deux chaînes.
ActionScript traite les espaces au début ou à la fin d’une chaîne comme faisant partie de la chaîne.
L’expression suivante contient un espace après la virgule :
salutations = "Bonjour, " + prénom;
Pour inclure un guillemet dans une chaîne, il faut le faire précéder d’une barre oblique inverse (\).
Cette opération s’appelle échapper un caractère. D’autres caractères ne peuvent pas être représentés
dans ActionScript sans l’emploi de séquences d’échappement particulières. Le tableau suivant
répertorie l’ensemble des caractères d’échappement d’ActionScript:
Number
Le type de données Number correspond à un nombre à virgule flottante à double précision. Vous
pouvez manipuler les nombres avec les opérateurs arithmétiques d’addition (+), de soustraction (-),
de multiplication (*), de division (/), de modulo (%), d’incrémentation (++) et de
décrémentation (--). Vous pouvez également utiliser des méthodes des classes intégrées Math et
Number pour manipuler les nombres. L’exemple suivant utilise la méthode sqrt() (racine carrée)
pour renvoyer la racine carrée de 100 :
Math.sqrt(100);
Pour plus d’informations, consultez Opérateurs numériques, page 48.
Séquence
d’échappement
Caractère
\b Caractère de retour arrière (ASCII 8)
\f Caractère de changement de page (ASCII 12)
\n Caractère de changement de ligne (ASCII 10)
\r Caractère de retour chariot (ASCII 13)
\t Caractère de tabulation (ASCII 9)
\" Guillemet droit double
\’ Guillemet droit simple
\\ Barre oblique inverse
\000 - \377 Un octet spécifié en octal
\x00 - \xFF Un octet spécifié en hexadécimal
\u0000 - \uFFFF Un caractère Unicode 16 bits spécifié en hexadécimal38 Chapitre 2 : Notions de base du langage ActionScript
Boolean
Une valeur booléenne est soit true (vraie), soit false (fausse). ActionScript convertit également
les valeurs true et false en 1 et 0 lorsque cela est nécessaire. Les valeurs booléennes sont le plus
souvent utilisées dans les instructions ActionScript effectuant des comparaisons pour contrôler le
déroulement d’un script. Par exemple, dans le script suivant, le fichier SWF est lu si la variable
motDePasse est vraie (true):
onClipEvent(enterFrame){
if (nomDutilisateur == true && motDePasse == true){
play();
}
}
Consultez Utilisation de fonctions intégrées, page 53, et Opérateurs logiques, page 49.
Objet
Un objet est une collection de propriétés. Chaque propriété possède un nom et une valeur. La
valeur d’une propriété peut être de n’importe quel type de données Flash, même un type de
données Object. Cela vous permet d’arranger les objets les uns dans les autres, ou de les imbriquer.
Pour spécifier les objets et leurs propriétés, vous devez utiliser l’opérateur point (.). Par exemple,
dans le code suivant, heuresTravaillées est une propriété de statsHebdo, qui est une propriété
de personnel :
personnel.statsHebdo.heuresTravaillées
Vous pouvez utiliser les objets ActionScript intégrés pour localiser et manipuler certains types
d’informations spécifiques. Par exemple, l’objet Math possède des méthodes qui effectuent des
opérations mathématiques sur les nombres que vous leur transmettez. Cet exemple utilise la
méthode sqrt() :
racineCarrée = Math.sqrt(100);
L’objet ActionScript MovieClip possède des méthodes qui vous permettent de contrôler les
occurrences de symbole de clip sur la scène. Cet exemple utilise les méthodes play() et
nextFrame() :
nomDoccurrenceMC.play();
nomDoccurrenceMC2.nextFrame();
Vous pouvez aussi créer des objets personnalisés pour organiser les informations dans votre
application Flash. Pour ajouter de l’interactivité à votre application avec ActionScript, vous aurez
besoin d’un certain nombre d’informations : un nom d’utilisateur, la vitesse d’une balle, les noms
des objets contenus dans un panier, le nombre d’images chargées, le code postal de l’utilisateur et
la dernière touche utilisée, par exemple. La création d’objets personnalisés vous permet
d’organiser ces informations dans des groupes, de simplifier la rédaction et de réutiliser vos scripts.
MovieClip
Les clips sont des symboles qui peuvent lire des effets animés dans une application Flash. Ils sont
le seul type de données faisant référence à un élément graphique. Le type de données MovieClip
vous permet de contrôler les symboles de clip au moyen des méthodes de la classe MovieClip.
Vous appelez les méthodes en utilisant l’opérateur point (.), comme ci-dessous :
mon_mc.startDrag(true);
parent_mc.getURL("http://www.macromedia.com/support/" + produit);Affectation de types de données aux éléments 39
Null
Le type de données nul ne possède qu’une valeur, null. Cette valeur signifie en fait « pas de
valeur », c’est-à-dire une absence de données. La valeur null peut être utilisée dans diverses
situations. En voici quelques exemples :
• Pour indiquer qu’une variable n’a pas encore reçu de valeur.
• Pour indiquer qu’une variable ne contient plus de valeur.
• En tant que valeur de retour d’une fonction, afin d’indiquer qu’aucune valeur n’a pu être
retournée par la fonction.
• En tant que paramètre d’une fonction, afin d’indiquer qu’un paramètre est omis.
Undefined
Le type de données undefined ne possède qu’une valeur, undefined, et est utilisé pour les
variables auxquelles aucune valeur n’a été affectée.
Définition du type de données d’un objet
Lors du test et du débogage de vos programmes, des problèmes liés aux types de données peuvent
se produire. Dans ce cas, il peut être souhaitable de déterminer le type de données d’un objet.
Pour ce faire, utilisez l’opérateur typeof, comme dans l’exemple suivant :
trace(typeof(nomDeVariable));
Pour plus d’informations sur le test et le débogage, consultez le Chapitre 3, Rédaction et débogage
de scripts, page 57.
Affectation de types de données aux éléments
Flash affecte automatiquement les types de données aux éléments de langage suivants, comme
indiqué dans la section suivante, Typage des données automatique :
• Variables
• Paramètres transmis à une fonction, à une méthode ou à une classe
• Valeurs renvoyées d’une fonction ou d’une méthode
• Objets créés comme sous-classes de classes existantes
Vous pouvez également affecter explicitement des types de données aux éléments, ce qui peut vous
aider à éviter ou diagnostiquer certaines erreurs dans vos scripts. Pour plus d’informations,
consultez Typage strict des données, page 40.
Typage des données automatique
Dans Flash, il n’est pas nécessaire de définir explicitement un élément comme contenant un
nombre, une chaîne ou un autre type de données. Flash détermine le type de données d’un
élément lorsque celui est affecté :
var x = 3;
Dans l’expression var x = 3, Flash évalue l’élément à droite de l’opérateur et détermine qu’il
s’agit du type de données nombre. Une affectation ultérieure pourra changer le type de x. Par
exemple, l’instruction x = "bonjour" change le type de x en chaîne. Une variable à laquelle
aucune valeur n’a été affectée est du type undefined.40 Chapitre 2 : Notions de base du langage ActionScript
ActionScript convertit automatiquement les types de données lorsqu’une expression le nécessite.
Par exemple, lorsque vous transmettez une valeur à l’action trace(), trace() convertit
automatiquement la valeur en chaîne et l’envoie au panneau de sortie. Dans les expressions avec
opérateurs, ActionScript convertit les types de données en fonction des besoins, par exemple, lors
de l’utilisation dans une chaîne, l’opérateur + s’attend à ce que l’autre opérande soit une chaîne.
"Suivant : le numéro " + 7
ActionScript convertit le chiffre 7 en chaîne "7" et l’ajoute à la fin de la première chaîne, ce qui
aboutit à la chaîne suivante :
"Suivant : le numéro 7"
Typage strict des données
ActionScript 2.0 vous permet de déclarer explicitement le type d’objet d’une variable lorsque vous
la créez, ce qui est appelé typage strict. Les incompatibilités de type de données déclenchent des
erreurs de compilation, le typage strict vous permet donc d’éviter d’affecter un type de données
incorrect à une variable existante. Pour affecter un type de données spécifique à un élément,
spécifiez son type à l’aide d’une syntaxe utilisant le mot-clé var ainsi que deux points :
// typage strict de variable ou objet
var x:Number = 7;
var anniversaire:Date = new Date();
// typage strict de paramètres
function welcome(firstName:String, age:Number){
}
// typage strict de paramètre et de valeur renvoyée
function square(x:Number):Number {
var squared = x*x;
return squared;
}
Etant donné que vous devez utiliser le mot-clé var pour le typage strict des variables, vous ne
pouvez pas définir strictement le type d’une variable globale (consultez Domaine et déclaration de
variables, page 44).
Vous pouvez typer des objets en fonction des classes intégrées (Button, Date, MovieClip, etc.) et
des classes et interfaces que vous créez. Par exemple, vous avez un fichier qui s’appelle Etudiant.as
dans lequel vous avez défini une classe Etudiant, vous pouvez spécifier que les objets que vous
créez sont de type Etudiant :
var étudiant:Student = new Student();
Vous pouvez également spécifier que les objets sont de type Function ou Void.
L’utilisation du typage strict vous empêche d’affecter, par inadvertance, un type de valeur
incorrect à un objet. Flash recherche les incompatibilités de type au moment de la compilation.
Par exemple, supposons que vous tapez ce qui suit :
// dans le fichier de classe Etudiant.as
class Etudiant {
var status:Boolean; // propriété des objets Etudiant
}
// dans un script
var étudiantMarieLago:Student = new Student();
étudiantMarieLago.status = "inscrite";Affectation de types de données aux éléments 41
Lorsque Flash compile ce script, une erreur « Incompatibilité de types » se produit.
Un des autres avantages du typage strict des données réside dans le fait que Flash MX 2004 affiche
automatiquement des conseils de code pour les objets intégrés que vous typez strictement. Pour
plus d’informations, consultez Typage strict des objets pour déclencher des conseils de code, page 64.
Les fichiers publiés à l’aide d’ActionScript 1 ne respectent pas les affectations de typage strict des
données lors de la compilation. Ainsi, l’affectation du mauvais type de valeur à une variable que
vous avez strictement typée ne génère pas d’erreur de compilation.
var x:String = "abc"
x = 12 ; // aucune erreur dans ActionScript 1, erreur de compatibilité de type
dans ActionScript 2
Ceci est dû au fait que lorsque vous publiez un fichier pour ActionScript 1, Flash interprète une
instruction telle que var x:String = "abc" comme une syntaxe à barre oblique et non comme
un typage strict. (ActionScript 2.0 ne supporte pas la syntaxe à barre oblique.) Il peut alors en
résulter un objet affecté à une variable de type erroné. Le compilateur autorise alors que des appels
de méthodes illégaux et que des références de propriété non définies passent sans être signalés.
Ainsi, si vous implémentez le typage strict de données, assurez-vous de publier les fichiers pour
ActionScript 2.0.
Attribution d’objets
ActionScript 2.0 vous permet d’attribuer un type de données à un autre. L’opérateur d’attribution
utilisé par Flash se présente sous la forme d’un appel de fonction et concorde avec la coercition
explicite, telle qu’elle est définie dans la norme ECMA-262 version 4. L’attribution vous permet
d’affirmer qu’un objet est d’un type spécifique de telle sorte que, lors de la vérification du type, le
compilateur considère que l’objet est doté de propriétés absentes du type d’origine. Ceci peut
s’avérer utile, par exemple, lors de l’itération sur un tableau d’objets pouvant être de types
différents.
Dans les fichiers publiés pour Flash Player 7 ou une version ultérieure, les instructions
d’attribution qui échouent à l’exécution renvoient null. Dans les fichiers publiés pour Flash
Player 6, les attributions ayant échouées ne sont pas supportées à l’exécution.
La syntaxe d’attribution est type(élément) : le compilateur doit se comporter comme si le type
de données de élément était type. L’attribution est essentiellement un appel de fonction, et
l’appel de fonction renvoi null si l’attribution échoue. Si l’attribution réussit, l’appel de fonction
renvoie l’objet original. Toutefois, le compilateur ne génère pas d’erreurs d’incompatibilité de type
lorsque vous attribuez des éléments à des types de données que vous avez créés dans des fichiers de
classe externes, même si l’attribution échoue à l’exécution.
// dans Animal.as
class Animal {}
// dans Chien.as
class Chien extends Animal { function aboie (){} }
// dans Chat.as
class Chat extends Animal { function miaule (){} }
// dans le fichier FLA
var spot:Chien = new Chien(); 42 Chapitre 2 : Notions de base du langage ActionScript
var temp:Chat = Chat (spot); // affirme qu’un objet Chien est de type Chat
temp.miaou(); // n’a aucun effet et n’entraîne pas d’erreur de compilation non
plus
Dans cette situation, vous avez indiqué au compilateur que temp est un objet Chat, et le
compilateur suppose donc que temp.miaou() est une instruction légale. Toutefois, le compilateur
ne sait pas que l’attribution échouera (c’est-à-dire que vous avez essayé d’attribuer un objet Chien
à un type Chat), et aucune erreur de compilation ne se produit. Si vous incorporez une
vérification dans votre script de manière à vous assurer que l’attribution réussit, vous pouvez
trouver des erreurs d’incompatibilité de types à l’exécution.
var spot:Chien = new Chien();
var temp:Chat = Chat (spot);
trace(temp); //affiche null à l’exécution
Vous pouvez attribuer une expression à une interface. Si l’expression est un objet qui implémente
l’interface, ou si elle possède une classe de base qui implémente l’interface, l’objet est renvoyé.
Sinon, null est renvoyé.
L’exemple suivant montre les résultats de l’attribution de types d’objet intégrés. Comme le montre
la première ligne du bloc with(results), une attribution illégale (dans le cas présent,
l’attribution d’une chaîne à un clip) renvoie null. Comme le montrent les deux dernières lignes,
l’attribution vers null ou undefined renvoie undefined.
var mc:MovieClip;
var tab:Array;
var bool:Boolean;
var num3:Number;
var obj:Object;
var str:String;
_root.createTextField("results",2,100,100,300,300);
with(results){
text = "type MovieClip : "+(typeof MovieClip(str)); // renvoie null
text += "\ntype object : "+(typeof Object(str)); // renvoie object
text += "\ntype Array : "+(typeof Array(num3)); // renvoie object
text += "\ntype Boolean : "+(typeof Boolean(mc)); // renvoie boolean
text += "\ntype String : "+(typeof String(mc)); // renvoie string
text += "\ntype Number : "+(typeof Number(obj)); // renvoie number
text += "\ntype Function : "+(typeof Function(mc)); // renvoie object
text += "\ntype null : "+(typeof null(arr)); // renvoie undefined
text += "\ntype undefined : "+(typeof undefined(obj)); // renvoie undefined
}
//Résultats dans le panneau de sortie
type MovieClip : null
type object : objet
type Array : object
type Boolean : boolean
type String : string
type Number : number
type Function : object
type null : undefined
type undefined : undefined
Vous ne pouvez pas supplanter les types de données primitifs tels que Boolean, Date et Number
par un opérateur d’attribution du même nom. A propos des variables 43
A propos des variables
Une variable est un conteneur qui stocke des informations. Le conteneur reste toujours le même,
c’est le contenu qui peut varier. La modification de la valeur d’une variable pendant la lecture du
fichier SWF permet d’enregistrer les informations relatives aux actions de l’utilisateur,
d’enregistrer les valeurs modifiées pendant la lecture du fichier SWF ou d’évaluer si une condition
est true ou false.
Il est toujours judicieux d’affecter une valeur connue à une variable que vous définissez pour la
première fois. Cette opération, appelée initialisation de la variable, est souvent effectuée dans la
première image du fichier SWF. Elle facilite le suivi et la comparaison de la valeur de la variable
pendant la lecture du fichier SWF.
Les variables peuvent contenir tous les types de données (consultez A propos des types de données,
page 36). Le type de données contenu dans une variable affecte la façon dont est modifiée la
valeur de la variable lorsqu’elle est affectée à un script.
Les types d’informations standard que vous pouvez stocker dans une variable sont les URL, les
noms d’utilisateur, les résultats d’opérations mathématiques, le nombre de fois qu’un événement
s’est produit ou si un bouton a été actionné. Chaque fichier SWF et chaque occurrence de clip
dispose d’un jeu de variables, dont la valeur est indépendante des variables figurant dans d’autres
fichiers SWF ou clips.
Pour tester la valeur d’une variable, utilisez l’action trace() pour envoyer la valeur au panneau de
sortie. Par exemple, trace(heuresTravaillées) envoie la valeur de la variable
heuresTravaillées au panneau de sortie en mode de test. Vous pouvez également vérifier et
définir les valeurs des variables dans le débogueur en mode de test. Pour plus d’informations,
consultez Utilisation de l’instruction trace, page 82, et Affichage et modification de variables,
page 74.
Affectation d’un nom à une variable
Le nom des variables doit suivre les règles suivantes :
• Il doit s’agir d’un identifiant (consultez Te rmi n o l o g i e, page 28).
• Il ne peut pas s’agir d’un mot-clé ni d’un littéral ActionScript, tel que true, false, null ou
undefined.
• Il doit être unique dans son domaine (consultez Domaine et déclaration de variables, page 44).
Par ailleurs, n’utilisez pas les éléments du langage ActionScript comme noms de variable : cela
donnerait lieu à des erreurs de syntaxe ou à des résultats inattendus. Si vous appelez une variable
String, par exemple, puis tentez de créer un objet String au moyen de new String(), le nouvel
objet n’est pas défini.
bonjour_str = new String();
trace(bonjour_str.length); // renvoie 0
String = "bonjour"; // Attribution du nom d’une classe intégrée à une variable
bonjour_str = new String();
trace(bonjour_str.length); // renvoie undefined
L’éditeur ActionScript prend en charge les conseils de code pour les classes intégrées et pour les
variables basées sur ces classes. Si vous souhaitez obtenir des conseils de code pour un type d’objet
particulier affecté à une variable, vous pouvez définir strictement le type de cette dernière ou la
nommer en utilisant un suffixe spécial. 44 Chapitre 2 : Notions de base du langage ActionScript
Par exemple, supposons que vous tapez ce qui suit :
var membres:Array = new Array();
membres.
Dès que vous tapez le point (.), Flash affiche la liste des méthodes et propriétés disponibles pour
les objets Array. Pour plus d’informations, consultez Rédaction de code qui déclenche des conseils de
code, page 64.
Domaine et déclaration de variables
Le domaine d’une variable fait référence au domaine dans lequel la variable est connue et peut être
référencée. Il existe trois types de domaine de variable dans ActionScript :
• Les variables locales sont disponibles dans le corps de la fonction dans lequel elles sont déclarées
(délimité par des accolades).
• Les variables de scénario sont disponibles pour tout script dans ce scénario.
• Les variables globales et les fonctions sont visibles par tout scénario et domaine du document.
Remarque : Les classes ActionScript 2.0 que vous créez supportent des domaines de variables
publics, privés et statiques. Pour plus d’informations, consultez Contrôle de l’accès des membres,
page 170, et Création des membres de classe, page 172.
Les variables locales
Pour déclarer des variables locales, utilisez l’instruction var dans le corps de la fonction. Une
variable locale a un domaine limité au bloc et expire à la fin du bloc. Une variable locale qui n’est
pas déclarée dans un bloc expire à la fin de son script.
Par exemple, les variables i et j sont souvent utilisées comme compteurs de boucles. Dans
l’exemple suivant, i est utilisée comme variable locale et existe uniquement dans la fonction
constructJours() :
function constructJours() {
var i;
for( i = 0; i < tableauDeMois[month]; i++ ) {
_root.Jours.attachMovie( "affichageDesJours", i, i + 2000 );
_root.Jours[i].num = i + 1;
_root.Jours[i]._x = colonne * _root.Jours[i]._width;
_root.Jours[i]._y = ligne * _root.Jours[i]._height;
colonne = colonne + 1;
if (colonne == 7 ) {
colonne = 0;
ligne = ligne + 1;
}
}
}
Les variables locales permettent aussi d’empêcher les conflits de noms, qui peuvent donner lieu à
des erreurs dans une application. Par exemple, si vous créez la variable locale nom, vous pouvez
l’utiliser pour stocker un nom d’utilisateur dans un contexte et une occurrence de clip dans un
autre. Ces variables fonctionnant dans des domaines distincts, il n’y a pas de risques de conflits.A propos des variables 45
Il est toujours judicieux d’utiliser des variables locales dans le corps d’une fonction pour que celle-
ci puisse agir en tant que partie de code indépendante. Une variable locale n’est modifiable qu’au
sein de son propre bloc de code. Si une expression d’une fonction utilise une variable globale, un
élément extérieur peut modifier sa valeur, ce qui modifierait la fonction.
Vous pouvez affecter un type de données à une variable locale lorsque vous la définissez, ce qui
vous évite d’affecter un type de données erroné à une variable existante. Pour plus d’informations,
consultez Typage strict des données, page 40.
Les variables de scénario
Les variables de scénario sont disponibles pour tout script dans le scénario. Pour déclarer les
variables de scénario, initialisez-les sur n’importe quelle image du scénario. Veillez à initialiser la
variable avant de tenter d’y accéder dans un script. Si, par exemple, vous placez le code varx =
10 ; sur l’image 20, un script associé à une image précédant l’image 20 n’aura pas accès à cette
variable.
Les variables globales
Les variables et les fonctions globales sont visibles par tout scénario et domaine du document.
Pour créer une variable globale, faites précéder son nom de l’identifiant _global et n’utilisez pas
la syntaxe var =. Par exemple, le code suivant crée la variable globale monNom :
var _global.monNom = "George"; // erreur de syntaxe
_global.monNom = "George";
Toutefois, si vous initialisez une variable locale portant le même nom qu’une variable globale,
vous n’avez pas accès à cette dernière dans le domaine de la variable locale :
_global.compteur = 100;
compteur++;
trace(compteur); // affiche 101
function count(){
for( var compteur = 0; compteur <= 10 ; compteur++ ) {
trace(compteur); // affiche 0 à 10
}
}
count();
compteur++;
trace(compteur); // affiche 102
Utilisation des variables dans un programme
Vous devez déclarer une variable dans un script avant de pouvoir l’utiliser dans une expression. Si
vous utilisez une variable non déclarée, comme dans l’exemple suivant, elle prend la valeur NaN ou
undefined, et votre script est susceptible de générer des résultats inattendus :
var squared = x*x;
trace(squared); // NaN
var x = 6;
Dans l’exemple ci-dessous, l’instruction déclarant la variable x doit être placée en premier de sorte
que squared puisse être remplacée par une valeur.
var x = 6;
var squared = x*x;
trace(squared); // 3646 Chapitre 2 : Notions de base du langage ActionScript
La même chose se produit lorsque vous transmettez une valeur non définie à une méthode ou à
une fonction :
getURL(onSiteWeb); // aucune action
var monSiteWeb = "http://www.macromedia.com";
var monSiteWeb = "http://www.macromedia.com";
getURL(monSiteWeb); // le navigateur affiche www.macromedia.com
Vous pouvez changer plusieurs fois la valeur d’une variable dans un script. Le type de données
contenu dans la variable affecte les conditions et le moment où la variable sera modifiée. Les types
primitifs de données, comme les chaînes et les nombres, sont transmis par valeur. Cela signifie que
le contenu réel de la variable est transmis à la variable.
Dans l’exemple suivant, x est défini sur 15 et cette valeur est copiée dans y. Lorsque x devient 30
à la ligne 3, la valeur de y reste 15 étant donné que y ne va pas chercher sa valeur dans x ; elle
contient la valeur de x qu’elle a reçu à la ligne 2.
var x = 15;
var y = x;
var x = 30;
Dans un autre exemple, la variable valeurEntrée contient une valeur primitive, 3, la valeur réelle
étant donc transmise à la fonction sqrt() et la valeur renvoyée étant 9 :
function sqrt(x){
return x * x;
}
var valeurEntrée = 3;
var Sortie = sqrt(valeurEntrée);
La valeur de la variable valeurEntrée ne change pas.
Le type de données objet peut contenir tant d’informations complexes qu’une variable de ce type
ne contient pas la valeur réelle, mais contient une référence à la valeur. Cette référence est un
« alias » qui désigne le contenu de la variable. Lorsque la variable a besoin de connaître sa valeur, la
référence demande le contenu et renvoie la réponse sans transférer la valeur à la variable.
Le code suivant est un exemple de transmission par référence :
var monTableau = ["tom", "josie"];
var nouveauTableau = monTableau;
monTableau[1] = "jack";
trace(nouveauTableau);
Le code ci-dessus crée un objet Array appelé monTableau qui contient deux éléments. La variable
nouveauTableau est créée et reçoit une référence à monTableau. La modification du deuxième
élément de monTableau affecte toutes les variables qui y font référence. L’action trace() envoie
tom, jack au panneau de sortie.
Dans l’exemple suivant, monTableau contient un objet Array qui est transmis à la fonction
tableauNul() par référence. La fonction tableauNu()l change le contenu du tableau en
monTableau.
function tableauNul(leTableau){
var i;
for (i=0; i < leTableau.length; i++) {
leTableau[i] = 0;
}
} Utilisation d’opérateurs pour manipuler les valeurs des expressions 47
var monTableau = new Array();
monTableau[0] = 1;
monTableau[1] = 2;
monTableau[2] = 3;
tableauNul(monTableau);
La fonction tableauNul() accepte un objet Array comme paramètre et définit tous les éléments
de ce tableau sur 0. Elle peut modifier ce tableau car il est transmis par référence.
Utilisation d’opérateurs pour manipuler les valeurs des
expressions
Une expression est une instruction que Flash pourra évaluer et qui renvoie une valeur. Pour créer
une expression, vous pouvez associer des opérateurs et des valeurs ou appeler une fonction.
Les opérateurs sont des caractères qui spécifient comment combiner, comparer ou modifier les
valeurs d’une expression. Les éléments sur lesquels les opérateurs agissent sont appelés opérandes.
Par exemple, dans l’instruction suivante, l’opérateur + additionne la valeur d’un littéral numérique
à la valeur de la variable truc; truc et 3 sont les opérandes :
truc + 3
Cette section décrit des règles générales au sujet de types courants d’opérateurs, de la priorité des
opérateurs et de leur associativité. Pour plus d’informations sur chaque opérateur, de même que
sur les opérateurs spéciaux n’appartenant pas à ces catégories, consultez les entrées du
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Priorité et associativité des opérateurs
Lorsque deux opérateurs ou plus sont utilisés dans la même instruction, certains opérateurs sont
prioritaires par rapport à d’autres. ActionScript suit une hiérarchie précise pour déterminer les
opérateurs à exécuter en premier. Par exemple, une multiplication est toujours effectuée avant une
addition, les éléments entre parenthèses restant cependant prioritaires sur la multiplication. Donc,
sans parenthèses, ActionScript effectue la multiplication en premier, comme dans l’exemple
suivant :
total = 2 + 4 * 3;
Le résultat est 14.
Mais si l’addition est mise entre parenthèses, ActionScript effectue l’addition en premier :
total = (2 + 4) * 3;
Le résultat est 18.
Lorsque deux ou plusieurs opérateurs possèdent le même ordre de priorité, leur associativité
détermine l’ordre dans lequel ils sont exécutés. L’associativité peut aller de la gauche vers la droite,
comme de la droite vers la gauche. Par exemple, l’opérateur de multiplication a une associativité
gauche-droite et les deux instructions suivantes sont donc équivalentes :
total = 2 * 3 * 4;
total = (2 * 3) * 4;
Un tableau de tous les opérateurs, de leur ordre de priorité et de leur associativité, apparaît à
l’Annexe B, Priorité et associativité des opérateurs, page 779.48 Chapitre 2 : Notions de base du langage ActionScript
Opérateurs numériques
Les opérateurs numériques additionnent, soustraient, multiplient, divisent et effectuent d’autres
opérations arithmétiques.
L’emploi le plus courant de l’opérateur d’incrémentation est i++ au lieu de l’opérateur i = i+1,
qui est plus long. L’opérateur d’incrémentation peut s’utiliser avant ou après une opérande. Dans
l’exemple suivant, âge est incrémenté en premier, puis à nouveau testé contre le nombre 30 :
if (++âge >= 30)
Dans l’exemple suivant, âge est incrémenté à la suite du test :
if (âge++ >= 30)
Le tableau suivant répertorie les opérateurs numériques d’ActionScript :
Opérateurs de comparaison
Les opérateurs de comparaison comparent les valeurs des expressions et renvoient une valeur
booléenne (true ou false). Ces opérateurs sont surtout utilisés dans les boucles et les
instructions conditionnelles. Dans l’exemple suivant, si la variable score correspond à 100, un
fichier SWF spécifique est chargé ; sinon, c’est un autre fichier SWF qui est chargé :
if (score > 100){
loadMovieNum("gagnant.swf", 5);
} else {
loadMovieNum("perdant.swf", 5);
}
Le tableau suivant répertorie les opérateurs de comparaison d’ActionScript :
Opérateur Opération effectuée
+ Addition
* Multiplication
/ Division
% Modulo (reste de division)
- Soustraction
++ Incrémentation
-- Décrémentation
Opérateur Opération effectuée
< Inférieur à
> Supérieur à
<= Inférieur ou égal à
>= Supérieur ou égal àUtilisation d’opérateurs pour manipuler les valeurs des expressions 49
Opérateurs de chaîne
L’opérateur + agit de manière spéciale sur les chaînes : il en concatène les deux opérandes. Par
exemple, les instructions suivantes additionnent "Félicitations," et "Donna !":
"Félicitations, " + "Donna !"
Le résultat est "Félicitations, Donna !". Si un seul opérande de l’opérateur + est une chaîne,
Flash convertit l’autre opérande en chaîne.
Les opérateurs de comparaison >, >=, < et <= agissent également de manière particulière sur les
chaînes. Ces opérateurs comparent deux chaînes pour déterminer celle qui apparaît en premier
dans l’ordre alphabétique. Les opérateurs de comparaison ne comparent des chaînes que si les
deux opérandes sont des chaînes. Si un seul opérande est une chaîne, ActionScript convertit les
deux opérandes en nombres et effectue une comparaison numérique.
Opérateurs logiques
Les opérateurs logiques comparent des valeurs booléennes (true et false) et renvoient une
troisième valeur booléenne. Par exemple, si les deux opérandes sont true, l’opérateur logique
AND (&&) renvoie true. Si l’un des opérandes, ou les deux, est true, l’opérateur logique OR (||)
renvoie false. Les opérateurs logiques sont souvent utilisés en complément des opérateurs de
comparaison pour déterminer la condition d’une action if. Par exemple, dans le script suivant, si
les deux expressions sont true, l’action if est exécutée :
if (i > 10 && _framesloaded > 50){
play();
}
Le tableau suivant répertorie les opérateurs logiques d’ActionScript :
Opérateurs au niveau du bit
Les opérateurs au niveau du bit manipulent (en interne) les nombres à virgule flottante pour les
transformer en entiers 32 bits. L’opération exacte effectuée dépend de l’opérateur, mais toutes les
opérations au niveau du bit évaluent chaque bit d’un entier 32 bits séparément pour calculer une
nouvelle valeur.
Le tableau suivant répertorie les opérateurs au niveau du bit d’ActionScript :
Opérateur Opération effectuée
&& AND logique
|| OR logique
! NOT logique
Opérateur Opération effectuée
& AND au niveau du bit
| OR au niveau du bit
^ XOR au niveau du bit
~ NOT au niveau du bit
<< Décalage gauche50 Chapitre 2 : Notions de base du langage ActionScript
Opérateurs d’égalité
Vous pouvez utiliser l’opérateur d’égalité (=
pour déterminer si les valeurs ou les identités de
deux opérandes sont égales. Cette comparaison renvoie une valeur booléenne (true ou false). Si
les opérandes sont des chaînes, des nombres ou des valeurs booléennes, ils sont comparés par
valeur. Si les opérandes sont des objets ou des tableaux, ils sont comparés par référence.
Une erreur courante consiste à utiliser l’opérateur d’affectation pour contrôler l’égalité. Par
exemple, le code suivant compare x à 2 :
if (x == 2)
Dans ce même exemple, l’expression x = 2 est incorrecte, car elle ne compare pas les opérandes,
mais affecte la valeur 2 à la variable x.
L’opérateur d’égalité stricte (==
est semblable à l’opérateur d’égalité, à une différence
(importante) près : l’opérateur d’égalité stricte n’effectue pas de conversion de type. Si les deux
opérandes sont de types différents, l’opérateur d’égalité stricte renvoie false. L’opérateur
d’inégalité stricte (!=
renvoie l’inverse de l’opérateur d’égalité stricte.
Le tableau suivant répertorie les opérateurs d’égalité d’ActionScript :
Opérateurs d’affectation
Vous pouvez utiliser l’opérateur d’affectation (
pour affecter une valeur à une variable, comme
par exemple :
var motDePasse = "Sk8tEr";
Vous pouvez également utiliser l’opérateur d’affectation pour affecter plusieurs variables dans la
même expression. Dans l’instruction suivante, la valeur a est affectée aux variables b, c et d :
a = b = c = d;
Vous pouvez aussi utiliser des opérateurs d’affectation composés pour combiner des opérations.
Les opérateurs composés agissent sur les deux opérandes, puis affectent la nouvelle valeur au
premier. Par exemple, les deux instructions suivantes sont équivalentes :
x += 15;
x = x + 15;
L’opérateur d’affectation peut également être utilisé au milieu d’une expression, comme illustré ci-
dessous :
// s’il ne s’agit pas de vanille, afficher un message.
>> Décalage droit
>>> Décalage droit avec remplissage par zéros
Opérateur Opération effectuée
== Egalité
=== Egalité stricte
!= Inégalité
!== Inégalité stricte
Opérateur Opération effectuéeUtilisation d’opérateurs pour manipuler les valeurs des expressions 51
if ((goût =goûtGlace()) != "vanille") {
trace ("Le goût est " + flavor + ", pas la vanille.");
}
Ce code équivaut au code suivant, qui est quelque peu plus long :
goût = goûtGlace();
if (goût != "vanille") {
trace ("Le goût est " + flavor + ", pas la vanille.");
}
Le tableau suivant répertorie les opérateurs d’affectation d’ActionScript :
Opérateurs point et accès tableau
Vous pouvez utiliser les opérateurs point (.) et accès tableau ([]) pour accéder aux propriétés des
objets ActionScript intégrés ou personnalisés, telles que celles d’un clip.
L’opérateur point utilise le nom d’un objet dans sa partie gauche et le nom d’une propriété ou
d’une variable dans sa partie droite. Le nom de propriété ou de variable ne peut pas être une
chaîne ni une variable évaluée comme une chaîne ; il doit s’agir d’un identifiant. Les exemples
suivants utilisent l’opérateur point :
année.mois = "juin";
année.mois.jour = 9;
Les opérateurs point et accès tableau jouent le même rôle, mais l’opérateur point prend un
identifiant comme propriété alors que l’opérateur d’accès tableau évalue son contenu comme nom
et accède ensuite à la valeur de cette propriété nommée. Par exemple, les expressions suivantes
accèdent à la même variable vitesse dans le clip fusée :
fusée.vitesse;
fusée["vitesse"];
Opérateur Opération effectuée
= Affectation
+= Addition et affectation
-= Soustraction et affectation
*= Multiplication et affectation
%= Modulo et affectation
/= Division et affectation
<<= Décalage gauche au niveau du bit et affectation
>>= Décalage droit au niveau du bit et affectation
>>>= Décalage droit avec remplissage par zéros et affectation
^= XOR au niveau du bit et affectation
|= OR au niveau du bit et affectation
&= AND au niveau du bit et affectation52 Chapitre 2 : Notions de base du langage ActionScript
Vous pouvez utiliser l’opérateur d’accès tableau pour définir et récupérer dynamiquement les
noms et les variables des occurrences. Par exemple, dans le code suivant, l’expression insérée dans
l’opérateur [] est évaluée et le résultat de cette évaluation est utilisé comme nom de la variable à
récupérer du clip nom :
nom["mc" + i]
Vous pouvez également utiliser la fonction eval() , comme dans l’exemple ci-dessous :
eval("mc" + i)
L’opérateur d’accès tableau peut également être utilisé dans la partie gauche d’une instruction
d’affectation. Cela vous permet de définir dynamiquement les noms d’objet, de variable et
d’occurrence, comme dans l’exemple suivant :
nom[index] = "Gary";
Pour créer des tableaux multidimensionnels dans ActionScript, vous construisez un tableau dont
les éléments sont également des tableaux. Pour accéder aux éléments d’un tableau
multidimensionnel, vous pouvez imbriquer l’opérateur accès tableau en lui-même, comme illustré
ci-après :
var Echiquier = new Array();
for (var i=0; i<8; i++) {
Echiquier.push(new Array(8));
}
function récupContenuPosition(ligne, colonne){
Echiquier[ligne][colonne];
}
Vous pouvez contrôler qu’il ne manque pas d’opérateurs [] dans vos scripts ; consultez
Vérification de la syntaxe et de la ponctuation, page 69.
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
#3 20-08-2008 15:58:24
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Re: Guide de référence sur l'action script de flash
Définition du chemin d’un objet
Pour utiliser une action afin de contrôler un clip ou un fichier SWF chargé, vous devez spécifier
son nom et son adresse, qui constituent le chemin cible.
Dans ActionScript, un clip est identifié par son nom d’occurrence. Par exemple, dans l’instruction
suivante, la propriété _alpha du clip nommé étoile est définie sur une visibilité de 50 % :
étoile._alpha = 50;
Pour donner un nom d’occurrence à un clip :
1 Sélectionnez le clip sur la scène.
2 Entrez un nom d’occurrence dans l’inspecteur des propriétés.
Pour identifier un fichier SWF chargé :
• Utilisez _levelX, où X est le numéro du niveau spécifié dans l’action loadMovie() qui a
chargé le fichier SWF.
Par exemple, un fichier SWF chargé dans le niveau 5 a pour chemin cible _level5. Dans
l’exemple suivant, un fichier SWF est chargé dans le niveau 5 et sa visibilité est définie sur
false :
onClipEvent(load) {
loadMovieNum("monAnimation.swf", 5);
}
onClipEvent(enterFrame){Création de fonctions 53
_level5._visible = false;
}
Pour entrer le chemin cible d’un fichier SWF :
• Dans le panneau Actions (Fenêtre > Développement > Actions), cliquez sur le bouton Insérer
un chemin cible et sélectionnez un clip dans la liste qui apparaît.
Pour plus d’informations sur les chemins cibles, consultez « Chemins cibles absolus et relatifs »
dans le guide Utilisation de Flash del’aide.
Utilisation de fonctions intégrées
Une fonction est un bloc de code ActionScript qui peut être réutilisé n’importe où dans un fichier
SWF. Si vous transmettez des valeurs en tant que paramètres à une fonction, cette dernière agit en
fonction de ces valeurs. Une fonction peut également renvoyer des valeurs.
Flash possède des fonctions intégrées qui permettent d’accéder à certaines informations et
d’exécuter certaines tâches, comme l’obtention du numéro de version de Flash Player qui héberge
le fichier SWF (getVersion()). Les fonctions appartenant à un objet sont appelées méthodes. Les
fonctions qui n’appartiennent pas à un objet sont appelées fonctions de niveau supérieur et se
trouvent dans la catégorie Fonctions du panneau Actions.
Chaque fonction possède ses propres caractéristiques, certaines fonctions vous obligeant à
transmettre certaines valeurs. Si vous transmettez plus de paramètres qu’il n’est nécessaire à la
fonction, les valeurs supplémentaires sont ignorées. Si vous ne transmettez pas un paramètre
requis, les paramètres vides reçoivent le type de données undefined, ce qui peut provoquer des
erreurs à l’exportation du script. Pour appeler une fonction, celle-ci doit se trouver dans l’image
que la tête de lecture a atteinte.
Pour appeler une fonction, utilisez tout simplement son nom et transmettez les paramètres
requis :
isNaN(someVar);
getTimer()
eval("someVar");
Pour plus d’informations sur une fonction, consultez son entrée dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Création de fonctions
Vous pouvez définir des fonctions pour exécuter une série d’instructions sur des valeurs
transmises. Vos fonctions peuvent également renvoyer des valeurs. Une fois définie, une fonction
peut être appelée à partir de tout scénario, y compris celui d’un fichier SWF chargé.
Une fonction bien rédigée peut être considérée comme une « boîte noire ». Si elle contient des
commentaires positionnés judicieusement au sujet de son entrée, sa sortie et son rôle, l’utilisateur
de la fonction ne doit pas nécessairement comprendre tout son fonctionnement interne. 54 Chapitre 2 : Notions de base du langage ActionScript
Définition d’une fonction
Les fonctions, tout comme les variables, sont associées au scénario du clip qui les définit, et vous
devez utiliser un chemin cible pour les appeler. Tout comme dans le cas d’une variable, vous
pouvez utiliser l’identificateur _global pour déclarer une fonction globale disponible pour tous
les scénarios sans emploi d’un chemin cible. Pour définir une fonction globale, faites précéder son
nom de l’identificateur _global, comme illustré ci-dessous :
_global.maFonction = function (x) {
return (x*2)+3;
}
Pour définir une fonction de scénario, utilisez l’action function suivie du nom de la fonction, des
paramètres qui doivent être transmis à la fonction et des instructions ActionScript qui indiquent
ce que la fonction fait.
L’exemple suivant illustre une fonction nommée aireDuCercle et dotée du paramètre rayon :
function aireDuCercle(rayon) {
return Math.PI * rayon * rayon;
}
Vous pouvez également définir une fonction en créant un littéral de fonction, une fonction sans
nom qui est déclarée dans une expression au lieu d’une instruction. Vous pouvez utiliser un littéral
de fonction pour définir une fonction, renvoyer sa valeur et l’affecter à une variable dans une
expression, comme illustré dans l’exemple suivant :
aire = (function() {return Math.PI * rayon *rayon;})(5);
Lorsqu’une fonction est redéfinie, la nouvelle définition remplace l’ancienne.
Transmission de paramètres à une fonction
Les paramètres sont les éléments sur lesquels une fonction exécute son code. Dans cet ouvrage, les
termes paramètre et argument sont interchangeables. Par exemple, la fonction suivante prend les
paramètres initiales et scoreFinal:
function remplirScores(initiales, scoreFinal) {
carteDeScore.affichage = initiales;
carteDeScore.score = scoreFinal;
}
Lorsque la fonction est appelée, les paramètres requis doivent lui être transmis. La fonction
substitue les valeurs transmises aux paramètres de la définition de la fonction. Dans cet exemple,
carteDeScore est le nom d’occurrence d’un clip, affichage et score étant des champs de texte
de saisie dans l’occurrence. L’appel de fonction suivant affecte la valeur "JEB" à la variable
display et la valeur 45000 à la variable affichage:
remplirScores("JEB", 45000);
Le paramètre initiales de la fonction remplirScores() est similaire à une variable locale : il
existe tant que la fonction est appelée et cesse d’exister à la sortie de la fonction. Si vous omettez
des paramètres lors de l’appel d’une fonction, les paramètres omis sont transmis comme
undefined. Si vous fournissez des paramètres supplémentaires dans un appel de fonction alors
qu’ils ne sont pas requis par la déclaration de la fonction, ces paramètres sont ignorés. Création de fonctions 55
Utilisation de variables dans une fonction
Les variables locales sont des outils qui simplifient grandement l’organisation du code et en
facilitent la compréhension. Lorsqu’une fonction utilise des variables locales, elle peut les cacher à
tous les autres scripts du fichier SWF. Les variables locales ont un domaine limité au corps de la
fonction et sont détruites à la sortie de celle-ci. Tous les paramètres transmis à une fonction sont
également traités comme des variables locales.
Vous pouvez également utiliser des variables globales et normales dans une fonction. Cependant,
si vous modifiez des variables globales ou normales dans une fonction, il est judicieux d’utiliser
des commentaires pour documenter ces modifications.
Renvoi de valeurs d’une fonction
Utilisez l’instruction return pour renvoyer les valeurs des fonctions. L’instruction return stoppe
la fonction et la remplace par la valeur de l’action return. Les règles suivantes gouvernent
l’utilisation de l’instruction return dans les fonctions :
• Si vous spécifiez un type de renvoi autre que void pour une fonction, vous devez inclure une
instruction return dans la fonction.
• Si vous spécifiez un type de renvoi void, n’incluez pas d’instruction return.
• Si vous ne spécifiez pas de type de renvoi, l’incorporation d’une instruction return est
facultative. Si vous n’en incluez pas, une chaîne vide est renvoyée.
Par exemple, la fonction suivante renvoie le carré du paramètre x et spécifie que la valeur renvoyée
doit être un Number :
function sqr(x):Number {
return x * x;
}
Certaines fonctions effectuent une série de tâches sans renvoyer de valeur. Par exemple, la fonction
suivante initialise une série de variables globales :
function initialize() {
bateau_x = _global.bateau._x;
bateau_y = _global.bateau._y;
voiture_x = _global.voiture._x;
voiture_y = _global.voiture._y;
}
Appel d’une fonction définie par l’utilisateur
Vous pouvez utiliser un chemin cible pour appeler une fonction d’un scénario, quel qu’il soit, à
partir de n’importe quel autre scénario, y compris celui d’un fichier SWF chargé. Si une fonction
a été déclarée au moyen de l’identificateur _global, il n’est pas nécessaire de l’appeler à l’aide d’un
chemin cible.
Pour appeler une fonction, entrez le chemin cible du nom de la fonction, si nécessaire, puis
transmettez les paramètres requis entre parenthèses. Par exemple, l’instruction suivante appelle la
fonction sqr() du clip MathLib du scénario principal, lui transmet le paramètre 3 et enregistre le
résultat dans la variable temp :
var temp = _root.MathLib.sqr(3);56 Chapitre 2 : Notions de base du langage ActionScript
L’exemple suivant utilise un chemin absolu pour appeler la fonction initialiser() qui a été
définie dans le scénario principal et n’exige aucun paramètre :
_root.initialiser();
L’exemple suivant utilise un chemin relatif pour appeler la fonction liste() qui a été définie dans
le clip functionsClip :
_parent.clipDeFonctions.liste(6);57
CHAPITRE 3
Rédaction et débogage de scripts
Dans Macromedia Flash MX 2004 et Macromedia Flash MX Professionnel 2004, vous pouvez
rédiger des scripts intégrés à votre fichier FLA ou stockés en externe sur votre ordinateur. (Si vous
rédigez des fichiers de classe ActionScript 2.0, stockez chaque classe comme un fichier externe du
même nom.) Pour rédiger des scripts intégrés, utilisez le panneau Actions et associez l’action à un
bouton, à un clip ou à une image dans le scénario (consultez Contrôle de l’exécution d’ActionScript,
page 57). Pour rédiger des fichiers de script externes, vous pouvez utiliser n’importe quel éditeur
de texte ou de code. Dans Flash Professionnel, vous pouvez aussi utiliser la fenêtre de script
intégrée. Pour plus d’informations, consultez Utilisation du panneau Actions et de la fenêtre de
script, page 59.
Lorsque vous utilisez l’éditeur ActionScript, vous pouvez également rechercher les erreurs de
syntaxe, mettre automatiquement le code en forme et utiliser des conseils pour compléter la
syntaxe du code. De plus, la fonction d’équilibrage de la ponctuation vous aide à compléter les
paires de parenthèses, de crochets ou d’accolades. Pour plus d’informations, consultez Utilisation
de l’éditeur ActionScript, page 63.
Lorsque vous travaillez dans un document, nous ne pouvons que vous recommander de le tester
assez fréquemment afin de vous assurer que sa lecture est aussi fluide que possible et qu’elle
s’effectue de la manière prévue. Vous pouvez utiliser le testeur de bande passante pour simuler la
lecture de votre document en fonction de différentes vitesses de connexion (consultez Test des
performances de téléchargement des documents dans le manuel Utilisation de Flash de l’aide).
Une version de débogage spéciale de Flash Player qui facilite la résolution des problèmes vous
permet de tester vos scripts. Si vous utilisez de bonnes techniques de programmation dans votre
code ActionScript, vos scripts seront plus faciles à dépanner si un problème imprévu est rencontré.
Pour plus d’informations, consultez Débogage de scripts, page 71.
Contrôle de l’exécution d’ActionScript
Lorsque vous rédigez un script, vous utilisez le panneau Actions pour associer le script à une
image d’un scénario, ou à un bouton ou un clip sur la scène. Les scripts associés à une image sont
exécutés lorsque la tête de lecture entre dans cette image. Toutefois, il se peut que les scripts
associés à la première image d’un fichier SWF se comportent différemment de ceux qui sont
associés aux images suivantes. La première image est en effet rendue de manière incrémentielle (les
objets sont tracés sur la scène au fur et à mesure de leur téléchargement dans Flash Player), ce qui
peut influer sur le moment où les actions sont exécutées. Toutes les images qui suivent la première
sont rendues en une seule fois, lorsque tous les objets qu’elles contiennent sont disponibles. 58 Chapitre 3 : Rédaction et débogage de scripts
Les scripts associés à des clips ou des boutons sont exécutés lorsqu’un événement se produit. Un
événement correspond à une occurrence dans le fichier SWF telle qu’un mouvement de souris, une
pression sur une touche ou le chargement d’un clip. Vous pouvez utiliser ActionScript pour
déterminer quand de tels événements se produisent et exécuter des scripts en fonction de
l’événement. Pour plus d’informations, consultez le Chapitre 4, Gestion d’événements, page 87.
Pour exécuter une action selon qu’une condition existe ou non, ou pour répéter une action, vous
pouvez utiliser les instructions , else, else if, for, while, do while, for..in ou switch, qui
sont décrites brièvement dans la suite de cette section.
Vérification d’une condition
Les instructions qui vérifient si une condition est true ou false commencent par le terme if. Si
la condition existe, ActionScript exécute l’instruction qui suit. Si la condition n’existe pas,
ActionScript passe à l’instruction suivante, à l’extérieur du bloc de code.
Pour optimiser les performances de votre code, vérifiez d’abord les conditions les plus probables.
Les instructions suivantes testent trois conditions. Le terme else if spécifie d’autres tests à
effectuer si les conditions précédentes sont false.
if (motDePasse == null || email == null) {
gotoAndStop("refuser");
} else if (motDePasse == iDutilisateur){
gotoAndPlay("démarrerAnim");
}
Pour vérifier une condition parmi d’autres, vous pouvez utiliser l’instruction switch, plutôt que
plusieurs instructions else if.
Répétition d’une action
ActionScript peut répéter une action un certain nombre de fois précisé ou tant qu’une condition
spécifique existe. Utilisez les actions while, do..while, for et for..in pour créer des boucles.
Pour répéter une action tant qu’une condition existe :
• Utilisez l’instruction while.
Une boucle while évalue une expression et exécute le code dans le corps de la boucle si
l’expression est true. L’expression est évaluée à nouveau après l’exécution de chaque instruction
du corps. Dans l’exemple suivant, la boucle est exécutée quatre fois :
i = 4;
while (var i > 0) {
mon_mc.duplicateMovieClip("nouveauMC" + i, i );
i--;
}
Vous pouvez utiliser l’instruction do..while pour créer le même genre de boucle qu’avec une
boucle while. Dans une boucle do..while, l’expression est évaluée à la fin du bloc de code et la
boucle est toujours exécutée au moins une fois, comme dans l’exemple suivant :
i = 4;
do {
mon_mc.duplicateMovieClip("nouveauMC" +i, i );
i--;
} while (var i > 0);Utilisation du panneau Actions et de la fenêtre de script 59
Pour répéter une action en utilisant un compteur intégré :
• Utilisez l’instruction for.
La plupart des boucles utilisent un compteur d’un certain type pour contrôler le nombre de fois
qu’une boucle est exécutée. Chaque exécution d’une boucle est appelée itération. Vous pouvez
déclarer une variable et rédiger une instruction qui augmente ou diminue la variable chaque fois
que la boucle est exécutée. Dans l’action for, le compteur et l’instruction qui l’incrémente font
partie de l’action. Dans l’exemple suivant, la première expression (var i = 4) est l’expression
initiale évaluée avant la première itération. La deuxième expression ( i > 0) est la condition
contrôlée à chaque fois avant l’exécution de la boucle. La troisième expression (i--) est appelée
post-expression et est évaluée à chaque fois après l’exécution de la boucle.
for (var i = 4; i > 0; i--){
monMC.duplicateMovieClip("nouveauMC" + i, i + 10);
}
Pour passer en boucle sur les enfants d’un clip ou d’un objet :
• Utilisez l’instruction for..in.
Les enfants sont composés d’autres clips, fonctions, objets et variables. L’exemple suivant utilise
l’instruction trace pour envoyer les résultats dans le panneau de sortie :
monObjet = { nom:’Joe’, âge:25, ville:’San Francisco’ };
for (nomDeProp in monObjet) {
trace("monObjet a la propriété : " + nomDeProp + ", avec la valeur : " +
monObjet[nomDeProp]);
}
Cet exemple donne les résultats suivants dans le panneau de sortie :
monObjet a la propriété : nom, avec la valeur : Joe
monObjet a la propriété : âge, avec la valeur : 25
monObjet a la propriété : ville, avec la valeur : San Francisco
Vous pouvez souhaiter que votre script itère sur un type particulier d’enfants, par exemple,
seulement sur les enfants d’un clip. Vous pouvez le faire avec for..in en conjonction avec
l’opérateur typeof.
for (nom dans monClip) {
if (typeof (monClip[nom]) == "clip") {
trace("J’ai un clip enfant appelé " + nom);
}
}
Pour plus d’informations sur chaque action, consultez les entrées correspondantes dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Utilisation du panneau Actions et de la fenêtre de script
Vous pouvez intégrer des scripts Flash à votre fichier FLA ou les enregistrer dans des fichiers
externes. Dans la mesure du possible, il est préférable d’enregistrer la majorité du code
ActionScript dans des fichiers externes. Il est en effet plus simple d’utiliser du code dans plusieurs
fichiers FLA. Ensuite, dans votre fichier FLA, créez un script comportant des instructions
#include pour accéder au code stocké en externe. Utilisez le suffixe .as pour identifier vos scripts
en tant que fichiers ActionScript (AS). (Si vous créez des fichiers de classe personnalisés, vous
devez les enregistrer en tant que fichiers AS externes.)60 Chapitre 3 : Rédaction et débogage de scripts
Remarque : Lors de la publication, de l’exportation, du test ou du débogage d’un fichier FLA, le code
ActionScript enregistré dans des fichiers externes est compilé dans un fichier SWF. Si vous modifiez
un fichier externe, vous devez donc l’enregistrer et recompiler tout fichier FLA qui l’utilise.
Vous pouvez associer à des images et à des objets le code ActionScript que vous intégrez dans un
fichier FLA. Dans la mesure du possible, associez le code ActionScript intégré à la première image
du scénario. Votre code ne sera ainsi pas éparpillé et vous ne serez pas obligé de le rechercher dans
tout le fichier FLA. Créez un calque appelé « Actions » et placez-y votre code. Ainsi, même si vous
associez du code à d’autres images ou à des objets, il vous suffira de consulter un seul calque pour
le retrouver.
Pour créer des scripts qui font partie de votre document, accédez directement à ActionScript via le
panneau Actions. Pour créer des scripts externes, utilisez votre éditeur de texte préféré ou, dans
Flash Professionnel, utilisez la fenêtre de script. Lorsque vous utilisez le panneau Actions ou la
fenêtre de script, vous utilisez le même éditeur ActionScript et tapez votre code dans la fenêtre de
script, sur le côté droit du panneau ou de la fenêtre. Pour éviter d’avoir à rédiger toutes les
informations, vous pouvez également sélectionner ou faire glisser des actions de la boîte à outils
Actions vers la fenêtre de script.
Pour afficher le panneau Actions, effectuez l’une des opérations suivantes :
• Choisissez Fenêtre > Panneaux de développement > Actions.
• Appuyez sur la touche F9.
(Flash Professionnel uniquement) Pour afficher la fenêtre de script, effectuez l’une des
opérations suivantes :
• Pour commencer à rédiger un nouveau script, choisissez Fichier > Nouveau > Fichier
ActionScript.
• Pour ouvrir un script existant, choisissez Fichier > Ouvrir, puis ouvrez un fichier ActionScript
(AS) existant.
• Pour modifier un script déjà ouvert, cliquez sur l’onglet du document qui affiche le nom du
script. (Les onglets de document sont uniquement disponibles sous Microsoft Windows.)
A propos de l’environnement de l’éditeur ActionScript
L’environnement de l’éditeur ActionScript se compose de deux sections. A droite figure la fenêtre
de script, dans laquelle vous saisissez le code. A gauche se trouve la boîte à outils Actions qui
comprend une entrée pour chaque élément du langage ActionScript. Utilisation du panneau Actions et de la fenêtre de script 61
Dans le panneau Actions, la boîte à outils Actions contient également un navigateur de script, qui
est une représentation visuelle des emplacements du fichier FLA auxquels du code ActionScript
est associé. Ce fichier vous permet de parcourir votre fichier FLA pour localiser le code
ActionScript. Si vous cliquez sur un élément dans le navigateur de script, le script correspondant
s’affiche dans la fenêtre de script et la tête de lecture se déplace jusqu’à la position appropriée dans
le scénario. Si vous double-cliquez sur un élément dans le navigateur de script, le script est
verrouillé (consultez Gestion de scripts dans un fichier FLA, page 62).
Plusieurs boutons figurent également au-dessus de la fenêtre de script :
Vous modifiez des actions, entrez des paramètres pour les actions ou supprimez des actions
directement dans la fenêtre de script. Vous pouvez également double-cliquer sur un élément de la
boîte à outils Actions ou sur le bouton Ajouter (+) en haut de la fenêtre de script pour ajouter des
actions dans la fenêtre de script.
Boîte à outils Actions Navigateur de script* Menu contextuel*
* Panneau Actions uniquement
Menu déroulant Options d’affichage
Options de débogage*
* Panneau Actions uniquement
Référence
Remplacer
Rechercher
Ajouter un élément au
script
Insérer un chemin cible*
Vérifier la syntaxe
Format automatique
Afficher les conseils
de code62 Chapitre 3 : Rédaction et débogage de scripts
Gestion de scripts dans un fichier FLA
Si vous disséminez le code dans un fichier FLA, vous pouvez verrouiller plusieurs scripts dans le
panneau Actions pour faciliter le passage de l’un à l’autre. Dans l’illustration suivante, le script
associé à l’emplacement en cours du scénario se trouve sur l’image 1 du calque Nettoyage.
(L’onglet le plus à gauche suit toujours votre emplacement dans le scénario.) Ce script est
également verrouillé (il est représenté par l’onglet le plus à droite). Deux autres scripts sont
verrouillés : un sur l’image 1 et l’autre sur l’image 15 du calque Intro. Pour passer d’un script
verrouillé à l’autre, cliquez sur les onglets correspondants ou utilisez les raccourcis clavier. Cette
opération n’a aucune incidence sur votre position actuelle dans le scénario.
Conseil : Si le contenu affiché dans la fenêtre de script ne change pas de manière à refléter
l’emplacement que vous sélectionnez dans le scénario, la fenêtre de script affiche probablement un
script verrouillé. Cliquez sur l’onglet le plus à gauche dans la partie inférieure gauche de la fenêtre de
script pour afficher le code ActionScript associé à votre emplacement sur le scénario.
Pour verrouiller un script :
1 Pointez sur le scénario afin que le script apparaisse dans un onglet situé en bas à gauche de la
fenêtre de script dans le panneau Actions.
2 Effectuez l’une des opérations suivantes :
■ Cliquez sur l’icône en forme de punaise qui figure à droite de l’onglet. (Si la punaise
ressemble à l’icône la plus à gauche, le script est déjà verrouillé. Cliquez sur l’icône pour le
déverrouiller.)
■ Cliquez sur l’onglet avec le bouton droit de la souris (Windows) ou en appuyant sur la
touche Ctrl (Macintosh) et choisissez Verrouiller le script.
■ Choisissez Verrouiller le script dans le menu contextuel Options (dans le coin supérieur
droit du panneau).
Pour déverrouiller un ou plusieurs scripts :
• Effectuez l’une des opérations suivantes :
■ Si un script verrouillé est affiché dans un onglet situé en bas à gauche de la fenêtre de script,
dans le panneau Actions, cliquez sur l’icône en forme de punaise située à droite de l’onglet.
(Si la punaise ressemble à l’icône la plus à gauche, le script est déjà déverrouillé. Cliquez sur
l’icône pour le verrouiller.)
■ Cliquez avec le bouton droit de la souris (Windows) ou cliquez en appuyant sur la touche
Control (Macintosh) sur l’onglet et choisissez Fermer le script ou Fermer tous les scripts.
■ Choisissez Fermer le script ou Fermer tous les scripts dans le menu contextuel Options
(dans le coin supérieur droit du panneau).
Pour utiliser les raccourcis clavier avec les scripts verrouillés :
• Vous pouvez utiliser les raccourcis clavier suivants avec les scripts verrouillés :
Action Raccourci clavier Windows Raccourci clavier Macintosh
Verrouiller le script Contrôle-= (signe égal) Commande-=
Déverrouiller le script Contrôle-- (signe moins) Commande-- Utilisation de l’éditeur ActionScript 63
Utilisation de l’éditeur ActionScript
Flash MX 2004 et Flash MX Professionnel 2004 comportent plusieurs outils pour vous aider à
rédiger du code conforme à la syntaxe. Ils vous donnent également la possibilité de définir des
préférences de formatage du code et d’autres options. Ces fonctionnalités sont présentées dans la
section suivante.
Mise en évidence de la syntaxe
Dans ActionScript, comme dans tout autre langage, la syntaxe est la manière dont les éléments
sont assemblés afin de créer du sens. Vos scripts ne fonctionneront pas si vous utilisez une syntaxe
ActionScript incorrecte.
Lorsque vous rédigez des scripts dans Flash MX 2004 et Flash MX Professionnel 2004, les
commandes qui ne sont pas prises en charge par la version du lecteur que vous ciblez s’affichent
en jaune dans la boîte à outils Actions. Par exemple, si la version de Flash Player SWF est définie
sur Flash 6, le code ActionScript qui est uniquement pris en charge par Flash Player 7 apparaît en
jaune dans la boîte à outils Actions. (Pour plus d’informations sur la définition de la version de
Flash Player SWF, consultez Définition des options de publication pour le format de fichier Flash
SWF dans le guide Utilisation de Flash de l’aide.)
Vous pouvez également définir une préférence pour que les « codes-couleurs » de Flash s’intègrent
à vos scripts, à mesure que vous les rédigez, afin de vous signaler les fautes de frappe. Par exemple,
supposons que vous ayez défini votre préférence de coloration de la syntaxe de sorte à ce que les
mots-clés s’affichent en vert foncé. Lors de la saisie, si vous entrez var, le mot var s’affiche en vert.
Toutefois, si vous tapez vae par inadvertance, le mot vae restera en noir, vous indiquant ainsi que
vous avez fait une faute de frappe.
Pour définir des préférences de coloration de la syntaxe en cours de frappe, effectuez l’une
des opérations suivantes :
• Choisissez Edition > Préférences et définissez les paramètres Coloration de la syntaxe dans
l’onglet ActionScript.
• Dans le menu contextuel Options (dans le coin supérieur droit du panneau Actions), choisissez
Préférences et définissez les paramètres Coloration de la syntaxe dans l’onglet ActionScript.
Déplacer le focus vers l’onglet
de droite
Contrôle-Maj-. (point) Commande-Maj-.
Déplacer le focus vers l’onglet
de gauche
Contrôle-Maj-, (virgule) Commande-Maj-,
Déverrouiller tous les scripts Contrôle-Maj-- (moins) Commande-Maj--
Action Raccourci clavier Windows Raccourci clavier Macintosh64 Chapitre 3 : Rédaction et débogage de scripts
Rédaction de code qui déclenche des conseils de code
Lorsque vous travaillez dans l’éditeur ActionScript (dans le panneau Actions ou la fenêtre de
script), Flash peut détecter l’action que vous entrez et afficher un conseil de code (une infobulle
contenant la syntaxe complète de l’action en cours ou un menu contextuel répertoriant des noms
de propriétés ou de méthodes possibles). Des conseils de code apparaissent pour les paramètres,
propriétés et événements lorsque vous tapez ou nommez strictement vos objets de sorte que
l’éditeur ActionScript sache quels conseils de code afficher, comme l’indique la suite de cette
section. Pour plus d’informations sur l’utilisation des conseils de code lorsque ceux-ci
apparaissent, consultez Utilisation de conseils de code, page 66.
Remarque : Les conseils de code sont activés automatiquement pour les classes natives pour
lesquelles vous n’avez pas besoin de créer ni de nommer un objet de la classe, telles que Math, Key,
Mouse, etc.
Typage strict des objets pour déclencher des conseils de code
Lorsque vous utilisez ActionScript 2.0, vous pouvez définir strictement le type d’une variable qui
est basée sur une classe intégrée, telle que Button, Array, etc. Si vous faites cela, l’éditeur
ActionScript affiche des conseils de code relatifs à la variable. Par exemple, supposons que vous
tapez ce qui suit :
var noms:Array = new Array();
noms.
Dès que vous tapez le point final (.), Flash affiche la liste des méthodes et propriétés disponibles
pour les objets Array, car vous avez défini la variable comme étant de type tableau. Pour plus
d’informations sur le typage des données, consultez Typage strict des données, page 40. Pour plus
d’informations sur l’utilisation des conseils de code lorsque ceux-ci apparaissent, consultez
Utilisation de conseils de code, page 66.
Utilisation de suffixes pour déclencher des conseils de code
Si vous utilisez ActionScript 1 ou que vous souhaitez afficher des conseils de code pour des objets
que vous créez sans définir strictement leur type (consultez Typage strict des objets pour déclencher
des conseils de code, page 64), vous devez ajouter un suffixe spécial au nom de chaque objet lors de
sa création. Par exemple, les suffixes qui déclenchent des conseils de code pour les classes Array et
Camera sont respectivement _array et _cam. Si vous tapez le code suivant :
var mon_array = new Array();
var ma_cam = Camera.get();
et que vous tapez le nom de la variable suivi d’un point, comme indiqué ci-dessous, des conseils
de code pour les objets Array et Camera s’affichent respectivement.
mon_array.
ma_cam.
Pour les objets qui apparaissent sur la scène, entrez le suffixe dans le champ Nom de l’occurrence,
dans l’inspecteur des propriétés. Par exemple, pour afficher des conseils de code pour des objets
MovieClip, utilisez l’inspecteur des propriétés pour affecter des noms d’occurrence portant le
suffixe _mc à tous les objets MovieClip. Lorsque vous taperez le nom d’une occurrence suivi d’un
point, des conseils de code d’afficheront.
Même si les suffixes ne sont pas nécessaires au déclenchement des conseils de code lorsque vous
définissez strictement le type d’un objet, il est recommandé de les utiliser de façon cohérente pour
rendre vos scripts plus compréhensibles.Utilisation de l’éditeur ActionScript 65
Le tableau suivant répertorie les suffixes requis pour le support des conseils de code
automatiques :
Pour plus d’informations sur l’utilisation des conseils de code lorsque ceux-ci apparaissent,
consultez Utilisation de conseils de code, page 66.
Type d’objet Suffixe de variable
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 _xmlsocket66 Chapitre 3 : Rédaction et débogage de scripts
Utilisation de commentaires pour déclencher des conseils de code
Vous pouvez également utiliser des commentaires ActionScript pour spécifier la classe d’un objet
pour les conseils de code. L’exemple suivant indique à ActionScript que la classe de l’occurrence
Lobjet est Object, et ainsi de suite. Si vous entrez le code mc suivi d’un point après ces
commentaires, un conseil de code affiche la liste de méthodes et de propriétés MovieClip. Si vous
entrez le code theArray suivi d’un point, un conseil de code affiche une liste de méthodes et de
propriétés Array, et ainsi de suite.
// Object Lobjet;
// Array leTableau;
// MovieClip mc;
Toutefois, Macromedia recommande d’utiliser le typage strict des données (consultez Typ a g e s t r i c t
des objets pour déclencher des conseils de code, page 64) ou les suffixes (consultez Utilisation de
suffixes pour déclencher des conseils de code, page 64) plutôt que cette technique, car ces techniques
permettent d’obtenir des conseils de code automatiquement et rendent votre code plus
compréhensible.
Utilisation de conseils de code
Les conseils de code sont activés par défaut. Des préférences vous permettent de désactiver les
conseils de code ou de déterminer la vitesse à laquelle ils s’affichent. Lorsque les conseils de code
sont désactivés dans les préférences, il est toujours possible d’afficher un conseil de code pour une
commande spécifique.
Pour définir des paramètres pour les conseils de code automatiques, effectuez l’une des
opérations suivantes :
• Choisissez Edition > Préférences, puis, dans l’onglet ActionScript, activez ou désactivez
l’option Conseils de code.
• Dans le panneau Actions, dans le menu contextuel Options (dans le coin supérieur droit du
panneau), choisissez Préférences et, sous l’onglet ActionScript, activez ou désactivez Conseils
de code.
Si vous activez les conseils de code, vous pouvez également spécifier un délai d’affichage, en
secondes. Par exemple, si vous découvrez ActionScript, il pourrait être souhaitable de ne spécifier
aucun délai, de sorte que les conseils de code s’affichent toujours immédiatement. Toutefois, si
vous savez en général ce que vous voulez taper et que vous avez besoin de conseils uniquement
lorsque vous utilisez des éléments de langage que vous ne connaissez pas, vous pouvez spécifier un
délai de sorte que les conseils de code ne s’affichent pas lorsque vous ne le souhaitez pas.
Pour utiliser des conseils de code de type info-bulle :
1 Faites apparaître un conseil de code en tapant une parenthèse d’ouverture [(] après un élément
qui nécessite l’utilisation des parenthèses, tel qu’un nom de méthode, une commande comme
if ou do while, etc.
Le conseil de code apparaît. Utilisation de l’éditeur ActionScript 67
Remarque : Si le conseil de code ne s’affiche pas, assurez-vous que l’option Conseils de code est
activée dans l’onglet ActionScript. Pour afficher des conseils de code pour une variable ou un
objet que vous avez créé(e), assurez-vous que vous avez nommé correctement la variable ou
l’objet (consultez Utilisation de suffixes pour déclencher des conseils de code, page 64), ou que
vous avez défini strictement son type (consultez Typage strict des objets pour déclencher des
conseils de code, page 64).
2 Entrez une valeur pour le paramètre. S’il existe plusieurs paramètres, séparez les valeurs par des
virgules.
Des commandes étendues telles que gotoAndPlay() ou for (il s’agit de fonctions ou de
méthodes qui peuvent être invoquées selon différents jeux de paramètres) affichent un
indicateur qui vous permet de choisir le paramètre que vous souhaitez définir. Cliquez sur les
petits boutons fléchés ou appuyez sur Ctrl+Flèche gauche ou Ctrl+Flèche droite pour choisir le
paramètre.
3 Pour annuler le conseil de code, effectuez l’une des opérations suivantes :
■ Tapez une parenthèse de fermeture [)].
■ Cliquez à l’extérieur de l’instruction.
■ Appuyez sur la touche Echap.
Pour utiliser des conseils de code de type menu :
1 Faites apparaître le conseil de code en tapant un point après le nom de la variable ou de l’objet.
Le menu du conseil de code apparaît.
Remarque : Si le conseil de code ne s’affiche pas, assurez-vous que l’option Conseils de code est
activée dans l’onglet ActionScript. Pour afficher des conseils de code pour une variable ou un
objet que vous avez créé(e), assurez-vous que vous avez nommé correctement la variable ou
l’objet (consultez Utilisation de suffixes pour déclencher des conseils de code, page 64), ou que
vous avez défini strictement son type (consultez Typage strict des objets pour déclencher des
conseils de code, page 64).
2 Pour naviguer dans les conseils de code, utilisez les touches Flèche Haut ou Flèche Bas.
3 Pour sélectionner un élément dans le menu, appuyez sur Entrée ou Tab, ou double-cliquez sur
cet élément.
4 Pour annuler le conseil de code, effectuez l’une des opérations suivantes :
■ Choisissez l’un des éléments du menu.
■ Cliquez à l’extérieur de l’instruction.
■ Tapez une parenthèse de fermeture [)] si vous avez déjà tapé une parenthèse d’ouverture.
■ Appuyez sur la touche Echap.68 Chapitre 3 : Rédaction et débogage de scripts
Pour afficher manuellement un conseil de code :
1 Cliquez dans le code à l’endroit où les conseils de code peuvent s’afficher. En voici quelques
exemples :
■ Après le point qui suit une instruction ou une commande, à l’endroit où une propriété ou
une méthode doit être entrée.
■ Entre les parenthèses dans un nom de méthode
2 Effectuez l’une des opérations suivantes :
■ Cliquez sur le bouton Afficher les conseils de code, situé au-dessus de la fenêtre de script.
■ Appuyez sur Ctrl+Barre d’espace (Windows) ou sur Commande+Barre d’espace
(Macintosh).
■ Si vous travaillez dans le panneau Actions, ouvrez le menu contextuel (dans le coin supérieur
droit de la barre de titre), puis choisissez Afficher les conseils de code.
Utilisation des touches de raccourci d’échappement
Vous pouvez ajouter plusieurs éléments à un script en utilisant des touches de raccourci (en
appuyant sur la touche Echap et sur deux autres touches). (Il ne s’agit pas des mêmes raccourcis
que les raccourcis clavier qui initialisent certaines commandes de menu.) Si vous saisissez
Echap+d+o dans la fenêtre de script, le code suivant est inséré dans votre script, et le point
d’insertion est placé immédiatement après le mot while, ce qui vous permet de commencer à
taper la condition :
do {
} while ();
De même, si vous saisissez Echap+c+h, le code suivant est inséré dans votre script, et le point
d’insertion est placé entre les parenthèses, ce qui vous permet de commencer à taper la condition :
catch () {
}Utilisation de l’éditeur ActionScript 69
Si vous souhaitez connaître (ou revoir) les commandes qui bénéficient de touches de raccourci,
vous pouvez les afficher en regard des éléments dans le panneau Actions.
Pour afficher ou masquer les touches de raccourci d’échappement :
• Dans le menu contextuel Options d’affichage, activez ou désactivez Afficher les touches de
raccourci Echap.
Vérification de la syntaxe et de la ponctuation
Pour déterminer à l’avance si le code que vous avez rédigé fonctionne comme prévu, vous devez
publier ou tester le fichier. Vous avez toutefois la possibilité d’effectuer une vérification rapide sans
quitter le fichier FLA. Les erreurs de syntaxe sont signalées dans le panneau de sortie. (Lors de la
vérification de la syntaxe, seul le script en cours est examiné ; les autres scripts que contient
éventuellement le fichier FLA sont ignorés.) Vous pouvez également vérifier que les jeux de
parenthèses, d’accolades ou de crochets (opérateurs d’accès tableau) encadrent correctement un
bloc.
Pour vérifier la syntaxe, effectuez l’une des opérations suivantes :
• Cliquez sur le bouton Vérifier la syntaxe, situé au-dessus de la fenêtre de script.
• Dans le panneau Actions, affichez le menu contextuel (dans le coin supérieur droit du
panneau) et choisissez Vérifiez la syntaxe.
• Appuyez sur Ctrl+T (Windows) ou sur Commande+T (Macintosh).
Pour vérifier l’équilibrage de la ponctuation :
1 Cliquez entre les accolades ({}), les opérateurs d’accès tableau ([]) ou les parenthèses (()) dans
votre script.70 Chapitre 3 : Rédaction et débogage de scripts
2 Appuyez sur Ctrl+’ (Windows) ou Commande+’ (Macintosh) pour sélectionner le texte entre
accolades, crochets ou parenthèses.
La mise en surbrillance vous permet de vérifier si la ponctuation d’ouverture possède une
ponctuation de fermeture correspondante.
Formatage du code
Vous pouvez définir des paramètres pour déterminer si votre code est formaté et mis en retrait
automatiquement ou manuellement. Vous pouvez également choisir l’affichage des numéros de
ligne et le retour à la ligne automatique des lignes de code trop longues.
Pour définir des options de format :
1 Effectuez l’une des opérations suivantes:
■ Dans le panneau Actions, dans le menu contextuel Options (dans le coin supérieur droit du
panneau), choisissez Options de format automatique.
■ (Flash Professionnel uniquement) Dans un fichier de script externe, choisissez Edition >
Options de format automatique.
La boîte de dialogue Options de format automatique apparaît.
2 Faites votre choix parmi les options proposées. Pour visualiser l’effet de chaque sélection,
examinez le panneau Afficher un aperçu.
Une fois les options de format automatique définies, vos paramètres s’appliquent
automatiquement au code que vous rédigez, mais pas au code existant. Pour appliquer vos
paramètres au code existant, vous devez procéder manuellement. Vous pouvez utiliser la
procédure suivante pour mettre en forme du code formaté selon d’autres paramètres, importé
d’un autre éditeur, etc.
Pour mettre du code en forme selon les paramètres Options de format automatique,
effectuez l’une des opérations suivantes :
• Cliquez sur le bouton Format automatique, situé au-dessus de la fenêtre de script.
• Choisissez Format automatique dans le menu contextuel du panneau Actions.
• Appuyez sur Ctrl+Maj+F1 (Windows) ou sur Commande+Maj+F1 (Macintosh).
Pour utiliser la fonction d’indentation automatique :
• L’indentation automatique est activée par défaut. Pour la désactiver, désactivez l’option
Indentation automatique dans les préférences d’ActionScript.
Lorsque l’indentation automatique est activée, le texte tapé après ( ou { est automatiquement
mis en retrait conformément à la valeur de taille de tabulation définie dans les préférences
d’ActionScript. Pour mettre en retrait une autre ligne, sélectionnez la ligne souhaitée, puis
appuyez sur la touche Tab. Pour supprimer le retrait, appuyez sur Maj+Tab.
Pour activer ou désactiver les numéros de ligne et le retour à la ligne automatique :
• Dans le menu contextuel Options d’affichage, activez ou désactivez Afficher les numéros de
ligne et Retour à la ligne.Débogage de scripts 71
Débogage de scripts
Flash propose plusieurs outils qui permettent de tester le code ActionScript dans vos fichiers SWF.
Le débogueur, qui est décrit dans la suite de cette section, vous permet de repérer des erreurs dans
un fichier SWF en cours d’exécution dans Flash Player. Flash dispose également des outils de
débogage complémentaires suivants :
• Le panneau de sortie, qui affiche des messages d’erreur et répertorie les variables et les objets
(consultez Utilisation du panneau de sortie, page 80).
• L’instruction trace, qui envoie des notes de programmation et la valeur des expressions au
panneau de sortie (consultez Utilisation de l’instruction trace, page 82).
• Les instructions throw et try..catch..finally, qui vous permettent de tester et de résoudre
les erreurs d’exécution à partir de votre script.
• Des messages d’erreur de compilateur clairs, qui vous permettent de diagnostiquer et de
résoudre les problèmes plus facilement (consultez l’Annexe A, Messages d’erreur, page 773).
Vous devez afficher votre fichier SWF dans une version spéciale de Flash Player appelée
débogueur de Flash Player. Lorsque vous installez l’outil de programmation, le débogueur de
Flash Player est automatiquement installé. Ainsi, si vous installez Flash et naviguez sur un site web
avec du contenu Flash, ou effectuez un test d’animation, cela signifie que vous utilisez le
débogueur de Flash Player. Vous pouvez également utiliser le programme d’installation situé dans
le répertoire <app_dir>\Players\Debug\ , ou lancer le débogueur de Flash Player autonome à
partir du même répertoire.
Lorsque vous utilisez la commande Tester l’animation pour tester des animations qui
implémentent des contrôles de clavier (tabulation, raccourcis claviers créés à l’aide de
Key.addListener() etc.), choisissez Contrôle > Désactiver les raccourcis clavier. La sélection de
cette option empêche l’environnement auteur de « récupérer » les séquences de touches, et les
laisse être transmises au lecteur. Par exemple, dans l’environnement auteur, Ctrl+U ouvre la boîte
de dialogue Préférences. Si votre script affecte Ctrl+U à une action qui souligne du texte à l’écran,
lorsque vous utilisez Tester l’animation, le fait d’appuyer sur Ctrl+U ouvre la boîte de dialogue
Préférences au lieu d’exécuter l’action qui souligne le texte. Pour que la commande Ctrl+U puisse
être transmise au lecteur, vous devez choisir Contrôle > Désactiver les raccourcis clavier.
Attention : La commande Tester l’animation échoue si n’importe quelle partie du chemin du fichier
SWF contient des caractères ne pouvant pas être représentés à l’aide du système de codage
MBCS. Par exemple, les chemins japonais ne fonctionnent pas dans un système anglais. Toutes les
zones de l’application utilisant le lecteur externe sont soumises à cette restriction.
Le débogueur affiche une liste hiérarchique des clips actuellement chargés dans Flash Player. Il
permet d’afficher et de modifier la valeur des variables et des propriétés pendant la lecture du
fichier SWF et d’insérer des points d’arrêt grâce auxquels vous pouvez arrêter le fichier SWF et
examiner le code ActionScript ligne par ligne.
Vous pouvez utiliser le débogueur en mode de test sur des fichiers locaux, ou l’utiliser pour tester
des fichiers sur un serveur web à un emplacement distant. Le débogueur permet d’insérer des
points d’arrêt dans le code ActionScript, grâce auxquels vous pouvez arrêter l’animation et
consulter le code ligne par ligne. Vous pouvez alors revenir aux scripts et les modifier afin
d’obtenir les résultats souhaités. 72 Chapitre 3 : Rédaction et débogage de scripts
Lorsque le débogueur est activé, sa barre d’état affiche l’URL ou le chemin d’accès local du fichier,
indique si celui-ci est exécuté en mode de test ou depuis un site distant, et présente une vue en
direct de la liste hiérarchique de clips. Lorsque vous ajoutez des clips au fichier ou en supprimez,
la liste est immédiatement mise à jour. Vous pouvez redimensionner la liste hiérarchique en tirant
la barre de séparation horizontale.
Pour activer le débogueur :
• Choisissez Contrôle > Déboguer l’animation.
Cette commande entraîne l’ouverture du débogueur. Elle ouvre également le fichier SWF en
mode de test.
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
#4 20-08-2008 15:58:43
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Re: Guide de référence sur l'action script de flash
Débogage d’un fichier SWF à partir d’un emplacement distant
Vous pouvez déboguer un fichier SWF à distance au moyen de la version autonome, de la version
ActiveX ou du module de Flash Player. Lors de l’exportation d’un fichier SWF, vous pouvez
activer le débogage dans le fichier et créer un mot de passe de débogage. Le débogueur n’est pas
activé si vous n’activez pas le débogage.
Pour que seuls certains utilisateurs puissent exécuter vos fichiers SWF dans le débogueur de Flash
Player, vous pouvez les publier avec un mot de passe de débogage. Tout comme dans JavaScript ou
HTML, les utilisateurs peuvent consulter les variables côté client dans ActionScript. Pour stocker
les variables de façon sécurisée, vous devez les envoyer à une application côté serveur au lieu de les
stocker dans votre fichier. Cependant, en tant que développeur Flash, vous ne voudrez peut-être
pas révéler d’autres secrets professionnels, tels que des structures de clips. Vous pouvez donc
utiliser un mot de passe de débogage pour protéger votre travail.
Lorsque vous exportez, publiez ou testez une animation, Flash crée un fichier SWD contenant des
informations de débogage. Pour effectuer le débogage à distance, vous devez placer le fichier
SWD dans le répertoire du serveur qui contient le fichier SWF.
Pour permettre le débogage à distance d’une animation Flash :
1 Choisissez Fichier > Paramètres de publication.
Liste hiérarchique Code
Barre d’état Liste d’observationDébogage de scripts 73
2 Sous l’onglet Flash de la boîte de dialogue Paramètres de publication, activez l’option Débogage
autorisé.
3 Pour définir un mot de passe, entrez-le dans le champ Mot de passe.
Une fois un mot de passe défini, personne ne peut télécharger d’informations vers le débogueur
sans entrer ce mot de passe. Cependant, aucun mot de passe n’est requis si vous ne remplissez
pas le champ correspondant.
4 Fermez la boîte de dialogue Paramètres de publication, puis choisissez l’une des commandes
suivantes :
■ Contrôle > Déboguer l’animation
■ Fichier > Exporter l’animation
■ Fichier > Paramètres de publication > Publier
Flash crée un fichier de débogage portant l’extension .swd et l’enregistre conjointement avec le
fichier SWF. Le fichier SWD contient des informations qui vous permettent d’utiliser des
points d’arrêt et de faire défiler le code pas à pas.
5 Placez le fichier SWD dans le répertoire du serveur qui contient le fichier SWF.
Si le fichier SWD ne se trouve pas dans ce répertoire, vous pouvez toujours effectuer le
débogage à distance, mais le débogueur ignore les points d’arrêt et il vous est impossible de
faire défiler le code pas à pas.
6 Dans Flash, choisissez Fenêtre > Panneaux de développement > Débogueur.
• Dans le débogueur, dans le menu contextuel Options (dans le coin supérieur droit du
panneau), choisissez Activer le débogage à distance.
Pour activer le débogueur à distance :
1 Ouvrez l’application auteur Flash.
2 Dans un navigateur ou dans le lecteur autonome, ouvrez le fichier SWF publié à partir de son
emplacement distant.
La boîte de dialogue Débogage à distance apparaît.74 Chapitre 3 : Rédaction et débogage de scripts
Si cette boîte de dialogue ne s’affiche pas, cela signifie que Flash n’a pas trouvé le fichier SWD.
Dans ce cas, cliquez sur le fichier SWF avec le bouton droit de la souris (Windows) ou en
appuyant sur la touche Ctrl (Macintosh) pour afficher un menu contextuel, et choisissez
Débogueur.
3 Dans la boîte de dialogue Débogage à distance, sélectionnez Hôte local ou Autre machine :
■ L’option Hôte local est utilisée si le lecteur de débogage et l’application auteur Flash se
trouvent sur le même ordinateur.
■ Optez pour Autre machine si le lecteur de débogage et l’application auteur Flash ne se
trouvent pas sur le même ordinateur. Entrez l’adresse IP de l’ordinateur qui exécute
l’application auteur Flash.
4 Lorsqu’une connexion est établie, une boîte de dialogue s’affiche et vous invite à entrer un mot
de passe. Entrez le mot de passe de débogage si vous en avez défini un.
La liste hiérarchique du fichier SWF apparaît dans le débogueur.
Affichage et modification de variables
L’onglet Variables du débogueur affiche les noms et valeurs des variables globales et de scénario du
fichier SWF. Si vous modifiez la valeur d’une variable dans cet onglet, vous pouvez constater la
modification dans le fichier SWF au cours de son exécution. Par exemple, pour tester la détection
de collision dans un jeu, vous pouvez entrer la valeur de la variable afin de positionner une balle à
l’emplacement correct près d’un mur.
L’onglet Locales du débogueur affiche les noms et les valeurs des variables locales disponibles
lorsque le fichier SWF s’est arrêté à un point d’arrêt ou n’importe où ailleurs dans une fonction
définie par l’utilisateur.
Pour afficher une variable :
1 Sélectionnez le clip contenant la variable de la liste.
Pour afficher les variables globales, sélectionnez le clip _global dans la liste.
2 Cliquez sur l’onglet Variables.Débogage de scripts 75
La liste hiérarchique est automatiquement mise à jour au cours de la lecture du fichier SWF. Un
clip supprimé du fichier SWF au niveau d’une image spécifique est également supprimé (avec sa
variable et son nom de variable) de la liste hiérarchique du débogueur. Toutefois, si vous marquez
une variable pour la liste d’observation (consultez Utilisation de la liste d’observation, page 75),
cette variable n’est pas supprimée.
Pour modifier la valeur d’une variable :
• Double-cliquez sur la valeur et entrez-en une nouvelle.
La valeur ne peut pas être une expression. Par exemple, vous pouvez utiliser "Bonjour", 3523 ou
"http://www.macromedia.com", et vous ne pouvez pas utiliser x + 2 ou eval("nom:" +i). La
valeur peut être une chaîne (n’importe quelle valeur comprise entre guillemets, un nombre ou une
valeur booléenne (true ou false).
Remarque : Pour afficher la valeur d’une expression dans le panneau de sortie en mode de test
d’animation, utilisez l’instruction trace. Pour plus d’informations, consultez Utilisation de l’instruction
trace, page 82.
Utilisation de la liste d’observation
Pour facilement contrôler un ensemble de variables critiques, vous pouvez marquer celles qui
doivent apparaître dans la liste d’observation. Cette liste affiche le chemin d’accès absolu de la
variable et de la valeur. Vous pouvez également entrer une nouvelle valeur de variable dans la liste
d’observation, comme dans le volet Variables.
Si vous ajoutez une variable locale à la liste d’observation, sa valeur ne s’affiche que lorsque le
lecteur est arrêté sur une ligne de code ActionScript au niveau de laquelle cette variable est utilisée.
Toutes les autres variables s’affichent pendant la lecture du fichier SWF. Si le débogueur ne trouve
pas la valeur de la variable, elle est répertoriée comme « undefined ».76 Chapitre 3 : Rédaction et débogage de scripts
La liste d’observation ne peut afficher que les variables, et non les propriétés ou les fonctions.
Variables marquées pour la liste d’observation et variables dans la liste d’observation
Pour ajouter des variables à la liste d’observation, effectuez l’une des opérations suivantes :
• Sous l’onglet Variables ou Locales, cliquez sur une variable sélectionnée avec le bouton droit de
la souris (Windows) ou en appuyant sur la touche Ctrl (Macintosh), puis choisissez
Observateur dans le menu contextuel. Un point bleu apparaît en regard de la variable.
• Sous l’onglet Observateur, cliquez sur une variable sélectionnée avec le bouton droit de la
souris (Windows) ou en appuyant sur la touche Ctrl (Macintosh), puis choisissez Ajouter dans
le menu contextuel. Entrez le chemin cible du nom de variable et sa valeur dans les champs.
Pour retirer des variables de la liste d’observation :
• Sous l’onglet Observateur, cliquez sur une variable sélectionnée avec le bouton droit de la
souris (Windows) ou en appuyant sur la touche Ctrl (Macintosh), puis choisissez Supprimer
dans le menu contextuel.
Affichage et modification des propriétés de clip
L’onglet Propriétés du débogueur affiche toutes les valeurs de propriétés des clips sur la scène.
Vous pouvez modifier une valeur et constater l’effet de la modification sur le fichier SWF lors de
son exécution. Certaines propriétés de clip sont en lecture seule et ne peuvent pas être modifiées.
Pour afficher les propriétés d’un clip dans le débogueur :
1 Sélectionnez un clip dans la liste.Débogage de scripts 77
2 Cliquez sur l’onglet Propriétés du débogueur.
Pour modifier la valeur d’une propriété :
• Double-cliquez sur la valeur et entrez-en une nouvelle.
La valeur ne peut pas être une expression. Par exemple, vous pouvez entrer 50 ou "goutteDeau"
mais pas x + 50. La valeur peut être une chaîne (n’importe quelle valeur comprise entre
guillemets, un nombre ou une valeur booléenne (true ou false). Vous ne pouvez pas entrer de
valeurs d’objets ou tableaux (par exemple, {id: "rogue"} ou [1, 2, 3]) dans le débogueur.
Pour plus d’informations, consultez Opérateurs de chaîne, page 49 et Utilisation d’opérateurs pour
manipuler les valeurs des expressions, page 47.
Remarque : Pour afficher la valeur d’une expression dans le panneau de sortie en mode de test
d’animation, utilisez l’instruction trace. Pour plus d’informations, consultez Utilisation de l’instruction
trace, page 82.
Définition et suppression de points d’arrêt
Un point d’arrêt vous permet d’interrompre un fichier SWF en cours de lecture dans Flash Player
à une ligne précise de code ActionScript. Vous pouvez utiliser les points d’arrêt pour tester
d’éventuels endroits problématiques du code. Par exemple, si vous avez rédigé un jeu
d’instructions if..else if et que vous ne pouvez pas déterminer laquelle est en cours
d’exécution, vous pouvez ajouter un point d’arrêt avant ces instructions et les faire défiler une par
une dans le débogueur.
Vous pouvez définir des points d’arrêt dans le panneau Actions ou dans le débogueur. (Pour
définir des points d’arrêt dans des scripts externes, vous devez utiliser le débogueur.) Les points
d’arrêt définis dans le panneau Actions sont enregistrés dans le document Flash (fichier FLA). Les
points d’arrêt définis dans le débogueur ne sont pas enregistrés dans le fichier FLA et ne sont
valides que pour la session de débogage en cours. 78 Chapitre 3 : Rédaction et débogage de scripts
Pour définir ou supprimer un point d’arrêt dans le panneau Actions, effectuez l’une des
opérations suivantes :
• Cliquez dans la marge gauche. La présence d’un point rouge indique un point d’arrêt.
• Cliquez sur le bouton Options de débogage, situé au-dessus de la fenêtre de script.
• Cliquez avec le bouton droit (Windows) ou en appuyant sur la touche Contrôle (Macintosh)
pour afficher le menu contextuel et choisissez Définir un point d’arrêt, Supprimer le point
d’arrêt ou Supprimer tous les points d’arrêt.
• Appuyez sur Ctrl+Maj+B (Windows) ou sur Commande+Maj+B (Macintosh).
Remarque : Dans les versions précédentes de Flash, un clic dans la marge gauche de la fenêtre de
script sélectionnait la ligne de code. Désormais il permet d’ajouter ou de supprimer un point d’arrêt.
Pour sélectionner une ligne de code, cliquez en appuyant sur la touche Ctrl (Windows) ou
Commande (Macintosh).
Pour définir ou supprimer des points d’arrêt dans le débogueur, effectuez l’une des
opérations suivantes :
• Cliquez dans la marge gauche. La présence d’un point rouge indique un point d’arrêt.
• Cliquez sur le bouton Basculer le point d’arrêt ou Supprimer tous les points d’arrêt, au-dessus
de l’affichage du code.
• Cliquez avec le bouton droit (Windows) ou en appuyant sur la touche Contrôle (Macintosh)
pour afficher le menu contextuel et choisissez Définir un point d’arrêt, Supprimer le point
d’arrêt ou Supprimer tous les points d’arrêt.
• Appuyez sur Ctrl+Maj+B (Windows) ou sur Commande+Maj+B (Macintosh).
Lorsque Flash Player est interrompu à un point d’arrêt, vous pouvez entrer dans une ligne de
code, l’ignorer ou en sortir. Un point d’arrêt fixé dans un commentaire ou sur une ligne vide du
panneau Actions est ignoré.
Défilement de lignes de code
Flash Player est mis en pause lorsque vous commencez une session de débogage. Si vous définissez
des points d’arrêt dans le panneau Actions, vous pouvez tout simplement cliquer sur le bouton
Continuer pour lire le fichier SWF jusqu’à ce qu’il rencontre un de ces points. Par exemple, dans le
code suivant, supposons qu’un point d’arrêt a été défini dans un bouton sur la ligne maFonction():
on(press) {
maFonction();
}
Lorsque vous cliquez sur le bouton, le point d’arrêt est atteint et Flash Player s’interrompt. Vous
pouvez ensuite intervenir afin d’amener le débogueur à la première ligne de maFonction(), là où
elle a été définie dans le document. Vous pouvez également faire défiler toute la fonction ou la
quitter.
Si vous n’avez pas défini de points d’arrêt dans le panneau Actions, vous pouvez utiliser le menu
de passage aux autres éléments du débogueur pour sélectionner n’importe quel script de
l’animation. Vous pouvez ensuite y ajouter des points d’arrêt. Après avoir ajouté des points d’arrêt,
vous devez cliquer sur le bouton Continuer pour lancer l’animation. Le débogueur s’arrête
lorsqu’il atteint le point d’arrêt. Débogage de scripts 79
Lorsque vous faites défiler les lignes de code, les valeurs des variables et des propriétés changent
dans la liste d’observation ainsi que dans les onglets Variables, Locales et Propriétés. Une flèche
jaune sur le côté gauche de la fenêtre de code du débogueur indique la ligne sur laquelle le
débogueur s’est arrêté. Utilisez les boutons suivants, placés en haut de la fenêtre de code :
Le bouton Pas à pas détaillé fait avancer le débogueur (indiqué par la flèche jaune) dans une
fonction. Le bouton Pas à pas détaillé ne peut être utilisé qu’avec les fonctions définies par
l’utilisateur.
Dans l’exemple suivant, si vous placez un point d’arrêt à la ligne 7 et que vous cliquez sur Pas à pas
détaillé, le débogueur passe à la ligne 2, et un nouveau clic sur ce bouton passe à la ligne 3. Un clic
sur Pas à pas détaillé pour des lignes ne comportant pas de fonction définie par l’utilisateur fait
avancer le débogueur sur une ligne de code. Par exemple, si vous effectuez un arrêt à la ligne 2 et
que vous choisissez Pas à pas détaillé, le débogueur passe à la ligne 3, comme dans l’exemple
suivant :
1 function maFonction() {
2 x = 0;
3 y = 0;
4 }
5
6 mover = 1;
7 maFonction();
8 mover = 0;
Le bouton Sortir du pas à pas fait sortir le débogueur d’une fonction. Le bouton Sortir du pas à
pas ne fonctionne que si vous êtes actuellement arrêté(e) sur une fonction définie par l’utilisateur.
Il déplace la flèche jaune sur la ligne suivant celle au niveau de laquelle cette fonction a été
appelée. Dans l’exemple ci-dessus, si vous placez un point d’arrêt à la ligne 3 et que vous cliquez
sur Sortir du pas à pas, le débogueur passe à la ligne 8. Un clic sur Sortir du pas à pas sur une ligne
qui ne se trouve pas dans une fonction définie par l’utilisateur équivaut à cliquer sur Continuer.
Par exemple, si vous vous arrêtez à la ligne 6 et que vous cliquez sur Sortir du pas à pas, le lecteur
continue à exécuter le script jusqu’à ce qu’il rencontre un point d’arrêt.
Le bouton Pas à pas principal fait avancer le débogueur sur une ligne de code. Le bouton Pas à
pas principal déplace la flèche jaune sur la ligne suivante du script et ignore les fonctions définies
par l’utilisateur. Dans l’exemple ci-dessus, si vous êtes arrêté(e) à la ligne 7 et que vous cliquez sur
Pas à pas principal, vous passez directement à la ligne 8 et maFonction() est ignorée.
Le bouton Continuer quitte la ligne au niveau de laquelle le lecteur est arrêté et continue la
lecture jusqu’à ce qu’un point d’arrêt soit atteint.
Arrêter le débogage
Basculer le point d’arrêt
Supprimer tous les points d’arrêt
Continuer
Pas à pas principal
Pas à pas détaillé
Sortir du pas à
pas80 Chapitre 3 : Rédaction et débogage de scripts
Le bouton Interrompre le débogage désactive le débogueur sans arrêter la lecture du fichier SWF
dans Flash Player.
Utilisation du panneau de sortie
En mode de test d’animation, le panneau de sortie affiche des informations facilitant le dépannage
de votre fichier SWF. Certaines informations, telles que les erreurs de syntaxe, sont
automatiquement affichées. Vous pouvez afficher d’autres informations à l’aide des commandes
Lister les objets et Lister les variables. (Consultez Liste des objets d’un fichier SWF, page 80 et Liste
des variables d’un fichier SWF , page 81.)
Si vous utilisez l’instruction trace dans vos scripts, vous pouvez envoyer des informations
spécifiques au panneau de sortie au cours de l’exécution du fichier SWF. Il peut s’agir de notes
relatives à l’état du fichier SWF ou à la valeur d’une expression. Pour plus d’informations, consultez
Utilisation de l’instruction trace, page 82.
Pour afficher le panneau de sortie, choisissez Fenêtre > Panneaux de développement > Sortie ou
appuyez sur la touche F2.
Remarque : Si un script comporte des erreurs de syntaxe, le panneau de sortie apparaît
automatiquement lorsque vous vérifiez la syntaxe ou que vous testez votre fichier SWF.
Pour utiliser le contenu du panneau de sortie, utilisez le menu d’options (dans le coin supérieur
droit).
Liste des objets d’un fichier SWF
En mode de test d’animation, la commande Lister les objets affiche le niveau, l’image, le type
d’objet (forme, clip ou bouton), les chemins cible et les noms d’occurrences de clips, boutons et
champs de texte dans une liste hiérarchique. Cela est particulièrement utile pour rechercher le
chemin cible et le nom de l’occurrence corrects. Contrairement au débogueur, la liste n’est pas
automatiquement mise à jour au cours de la lecture du fichier SWF ; vous devez choisir la
commande Lister les objets chaque fois que vous voulez envoyer les informations au panneau de
sortie.
La commande Lister les objets ne dresse pas la liste de tous les objets de données ActionScript.
Dans ce contexte, un objet est considéré comme une forme ou un symbole sur la scène.
Pour afficher une liste d’objets d’une animation :
1 Si l’animation n’est pas en cours d’exécution en mode de test d’animation, choisissez Contrôle >
Tester l’animation. Utilisation du panneau de sortie 81
2 Choisissez Déboguer > Lister les objets.
La liste des objets actuellement sur la scène s’affiche dans le panneau de sortie, comme illustré
dans l’exemple suivant :
Level #0: Image=1 Etiquette="Scene_1"
Bouton: Cible="_level0.monBouton"
Forme:
Clip: Image=1 Cible="_level0.monClip"
Forme:
Modifier le texte: Cible="_level0.monChampDeTexte" Texte="Ceci est un
exemple."
Liste des variables d’un fichier SWF
En mode de test, la commande Lister les variables affiche la liste de toutes les variables actuelles
que contient le fichier SWF. Cela est particulièrement utile pour rechercher la variable cible et le
nom de la variable corrects. Contrairement au débogueur, la liste n’est pas automatiquement mise
à jour au cours de la lecture du fichier SWF ; vous devez choisir la commande Lister les variables
chaque fois que vous voulez envoyer les informations au panneau de sortie.
La commande Lister les variables affiche également les variables globales déclarées au moyen de
l’identifiant _global. Les variables globales sont affichées en haut de la liste produite par l’option
Lister les variables, dans une section nommée « Variables globales ». Chacune d’entre elles est
précédée de la mention _global.
En outre, la commande Lister les variables affiche des propriétés de type lecture/définition, des
propriétés créées par la méthode Objet.addProperty() et qui appellent des méthodes get ou
set. Une propriété lecture/définition est affichée à côté des autres propriétés de l’objet auquel elle
appartient. Pour distinguer aisément ces propriétés des variables ordinaires, la valeur d’une
propriété lecture/définition porte le préfixe [obtenir/placer]. La valeur affichée pour une
propriété lecture/définition est déterminée par l’évaluation de la fonction get de la propriété.
Pour afficher la liste des variables d’un fichier SWF :
1 Si le fichier SWF n’est pas en cours d’exécution en mode de test, choisissez Contrôle > Tester
l’animation.
2 Choisissez Déboguer > Lister les variables.
La liste de toutes les variables qui figurent actuellement dans le fichier SWF s’affiche dans le
panneau de sortie, comme illustré dans l’exemple suivant :
Variables globales :
Variable _global.MonTableauDeGlobales = [objet 1] [
0:1,
1:2,
2:3
]
Level #0:
Variable _level0.$version = "WIN 6,0,0,101"
Variable _level0.VariableNormale = "Gary"
Variable _level0.UnObjet = [objet 1] {
maPropriété: [obtenir/placer] 3.14159
}82 Chapitre 3 : Rédaction et débogage de scripts
Affichage des propriétés de champ de texte pour le débogage
Pour obtenir des informations de débogage sur les objets du champ de texte, vous pouvez utiliser
la commande Déboguer > Lister les variables en mode tester l’animation. Le panneau de sortie
utilise les conventions suivantes pour l’affichage des objets TextField :
• Si une propriété est introuvable sur l’objet, elle ne s’affiche pas.
• Pas plus de quatre propriétés s’affichent sur une ligne.
• Une propriété possédant une valeur de chaîne est affichée sur une ligne séparée.
• Si d’autres propriétés sont définies pour l’objet après le traitement des propriétés intégrées, elles
s’ajoutent à l’affichage selon les règles des deuxième et troisième points précédents.
• Les propriétés de couleur s’affichent sous forme de nombres hexadécimaux (0x00FF00).
• Les propriétés sont affichées dans l’ordre suivant : variable, text, htmlText, html,
textWidth, textHeight, maxChars, borderColor, backgroundColor, textColor, border,
background, wordWrap, password, multiline, selectable, scroll, hscroll, maxscroll,
maxhscroll, bottomScroll, type, embedFonts, restrict, length, tabIndex, autoSize.
La commande Déboguer > Lister les objets en mode test répertorie les objets du champ de texte.
Si un nom d’occurrence est spécifié pour un champ de texte, le panneau de sortie affiche le
chemin cible complet, y compris le nom d’occurrence sous la forme suivante :
Target = "target path"
Utilisation de l’instruction trace
L’utilisation de l’instruction trace dans un script vous permet d’envoyer des informations au
panneau de sortie. Par exemple, lors du test d’une animation ou séquence, vous pouvez envoyer
des notes de programmation spécifiques au panneau ou afficher des résultats spécifiques lorsque
vous cliquez sur un bouton ou en lisez une image. L’instruction trace est similaire à l’instruction
JavaScript alert.
Lorsque vous utilisez l’instruction trace dans un script, vous pouvez utiliser des expressions en
tant que paramètres. La valeur d’une expression s’affiche dans le panneau de sortie en mode de
test, comme illustré dans l’exemple suivant :
L’instruction trace renvoie des valeurs qui sont affichées dans le panneau de sortie.Mise à jour de Flash Player pour le test 83
onClipEvent (enterFrame) {
trace("onClipEvent enterFrame " + enterFrame++)
}
Mise à jour de Flash Player pour le test
Vous pouvez télécharger la version la plus récente de Flash Player à partir du site du centre de
support Macromedia à l’adresse www.macromedia.com/support/flash afin de l’utiliser pour tester
vos fichiers SWF. 84 Chapitre 3 : Rédaction et débogage de scriptsPARTIE II
Gestion des événements et création d’interactivité
Certains événements, tels que les clics de souris ou les pressions exercées sur les touches, peuvent
être générés par l’utilisateur. D’autres peuvent être le résultat de certains autres processus, tels que
le chargement d’un fichier XML sur le réseau. Le premier chapitre de cette section décrit les
différents types d’événements dans Macromedia Flash et explique comment les traiter dans
ActionScript. Le deuxième chapitre explique comment appliquer ces principes pour créer des
présentations, des applications et des animations interactives simples.
Chapitre 4: Gestion d’événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Chapitre 5: Création d’interactivité avec ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
PARTIE II87
CHAPITRE 4
Gestion d’événements
Un événement est une occurrence logicielle ou matérielle qui requiert une réponse d’une
application Macromedia Flash. Par exemple, un événement tel qu’un clic de souris ou une
pression sur une touche est appelé événement utilisateur, puisqu’il résulte d’une interaction directe
avec l’utilisateur. Un événement généré automatiquement par Flash Player, tel que l’apparence
initiale d’un clip sur la scène, est appelé événement système, car il n’est pas généré directement par
l’utilisateur.
Pour que votre application réagisse à des événements, vous devez utiliser des gestionnaires
d’événement (code ActionScript associé à un objet et à un événement particuliers). Par exemple,
lorsqu’un utilisateur clique sur un bouton sur la scène, la tête de lecture peut passer à l’image
suivante. De même, à l’issue du chargement d’un fichier XML sur le réseau, le contenu du fichier
peut s’afficher dans un champ de texte.
ActionScript propose différentes méthodes de gestion des événements : méthodes de gestionnaire
d’événement, des écouteurs d’événement, et des gestionnaires d’événement de bouton et de clip.
Utilisation de méthodes de gestionnaire d’événement
Une méthode de gestionnaire d’événement est une méthode de classe invoquée lorsqu’un
événement se produit sur une occurrence de cette classe. Par exemple, la classe Button définit un
gestionnaire d’événement onPress, invoqué lorsque l’utilisateur clique avec le bouton de la souris
sur un objet Button. Contrairement aux autres méthodes de classe, vous n’invoquez pas
directement un gestionnaire d’événement ; Flash Player l’invoque automatiquement lorsque
l’événement approprié se produit.
Par défaut, les méthodes de gestionnaire d’événement ne sont pas définies : lorsqu’un événement
particulier se produit, son gestionnaire d’événement correspondant est invoqué, mais votre
application ne répond pas davantage à l’événement. Pour qu’elle réponde à l’événement, définissez
une fonction au moyen de l’instruction function et affectez-la au gestionnaire d’événement
approprié. La fonction que vous avez affectée au gestionnaire d’événement est ensuite
automatiquement invoquée lorsque l’événement se produit.
Un gestionnaire d’événement se compose de trois éléments : l’objet auquel l’événement
s’applique, le nom de la méthode de gestionnaire d’événement de l’objet et la fonction que vous
avez affectée au gestionnaire d’événement. L’exemple suivant illustre la structure de base d’un
gestionnaire d’événement.
object.eventMethod = function () {88 Chapitre 4 : Gestion d’événements
// Votre code, répondant à l’événement
}
Par exemple, supposons que vous avez un bouton suivant_btn sur la scène. Le code suivant
affecte au gestionnaire d’événement onPress du bouton une fonction qui permet de faire avancer
la tête de lecture jusqu’à l’image suivante dans le scénario.
suivant_btn.onPress = function ()
nextFrame();
}
Dans le code ci-dessus, la fonction nextFrame() est affectée directement à onPress. Vous pouvez
également affecter une référence de fonction (nom) à une méthode de gestionnaire d’événement
et définir la fonction ultérieurement.
// Assigne une référence de fonction à la méthode de gestionnaire d’événement
onPress du bouton
suivant_btn.onPress = goNextFrame;
// Définit la fonction doSubmit()
function goNextFrame() {
nextFrame();
}
Notez que vous affectez la référence de fonction et non la valeur renvoyée de la fonction au
gestionnaire d’événement onPress.
// Incorrect !
suivant_btn.onPress = goNextFrame();
// Correct.
suivant_btn.onPress = goNextFrame;
Certains gestionnaires d’événement reçoivent des paramètres transmis qui donnent des
informations sur l’événement qui s’est produit. Par exemple, le gestionnaire d’événement
TextField.onSetFocus est invoqué lorsqu’une occurrence de champ de texte parvient au focus
clavier. Ce gestionnaire d’événement reçoit une référence à l’objet de champ de texte qui avait
précédemment le focus clavier.
Par exemple, le code suivant insère du texte dans le champ de texte qui vient juste de perdre le
focus clavier.
nomDutilisateur_txt.onSetFocus = function(oldFocus_txt) {
ancienFocus_txt.text = "Je viens de perdre le focus clavier";
}
Les classes ActionScript suivantes définissent des gestionnaires d’événement : Button,
ContextMenu, ContextMenuItem, Key, LoadVars, LocalConnection, Mouse, MovieClip,
MovieClipLoader, Selection, SharedObject, Sound, Stage, TextField, XML et XMLSocket. Pour
plus d’informations sur les gestionnaires d’événement qu’elles proposent, consultez les entrées
correspondantes dans le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Vous pouvez également affecter des fonctions à des gestionnaires d’événement pour des objets que
vous créez lors de l’exécution. Le code suivant, par exemple, crée une nouvelle occurrence de clip
(nouveauClip_mc) et affecte une fonction au gestionnaire d’événement onPress du clip.
_root.attachMovie("idDeSymbole", "nouveauClip_mc", 10);
nouveauClip_mc.onPress = function () {
trace("Vous m’avez pressé");
}
Pour plus d’informations, consultez Création de clips à l’exécution, page 130.Utilisation des écouteurs d’événement 89
Utilisation des écouteurs d’événement
Les écouteurs d’événement permettent à un objet, appelé objet d’écoute, de recevoir des
événements générés par un autre objet, appelé objet diffuseur. L’objet diffuseur enregistre l’objet
d’écoute afin de recevoir des événements générés par le diffuseur. Par exemple, vous enregistrez un
objet de clip pour recevoir des notifications onResize de la scène, ou une occurrence de bouton
peut recevoir des notifications onChanged d’un objet de champ de texte. Vous pouvez enregistrer
plusieurs objets d’écoute pour recevoir des événements d’un seul diffuseur, et vous pouvez
enregistrer un seul objet d’écoute pour recevoir des événements de plusieurs diffuseurs.
Les écouteurs d’événement utilisent le même modèle que les gestionnaires d’événement (consultez
Utilisation de méthodes de gestionnaire d’événement, page 87), à deux différences près :
• L’objet auquel vous affectez le gestionnaire d’événement n’est pas l’objet qui émet l’événement.
• Appelez une méthode spéciale de l’objet diffuseur, addListener(), qui enregistre l’objet
d’écoute pour recevoir ses événements.
Pour utiliser les écouteurs d’événement, créez un objet d’écoute avec une propriété qui porte le
même nom que l’événement en cours de création par l’objet diffuseur. Affectez ensuite une
fonction à l’écouteur d’événement qui répond en quelque sorte à l’événement. Enfin, appelez
addListener() sur l’objet qui diffuse l’événement, en lui transmettant le nom de l’objet
d’écoute. Le code suivant présente le modèle d’écouteur d’événement.
objetDecoute.eventName = function(){
// votre code
};
objetDiffuseur.addListener(listenerObject);
L’objet d’écoute spécifié peut être tout objet, tel qu’une occurrence de bouton ou de clip sur la
scène ou une occurrence de n’importe quelle classe ActionScript. Le nom de l’événement est un
événement qui se produit sur objetDiffuseur, qui ensuite diffuse l’événement à objetDecoute.
Vous pouvez enregistrer plusieurs écouteurs sur un diffuseur d’événement.
L’exemple suivant illustre comment utiliser l’écouteur d’événement Selection.onSetFocus pour
créer un gestionnaire de focus simple pour un groupe de champs de saisie de texte. Dans ce cas, la
bordure du champ de texte qui reçoit le focus clavier est activée (affichée) et la bordure du champ
de texte qui a perdu le focus est désactivée.
Pour créer un gestionnaire de focus simple avec des gestionnaires d’événement :
1 En utilisant l’outil Texte, créez un champ de texte sur la scène.
2 Sélectionnez le champ de texte et, dans l’Inspecteur des propriétés, choisissez Entrée dans le
menu contextuel Type de texte, puis choisissez l’option Afficher la bordure autour du texte.
3 Créez un autre champ de saisie de texte, sous le premier.
Assurez-vous que l’option Afficher la bordure autour du texte n’est pas activée pour ce champ
de texte. Si nécessaire, continuez à créer des champs de saisie de texte.
4 Sélectionnez l’image 1 dans le scénario et ouvrez le panneau Actions (Fenêtre > Panneaux de
développement > Actions).
5 Pour créer un objet qui écoute les notifications de focus d’une classe Selection, entrez le code
suivant dans le panneau Actions :
var ecouteurDeFocus = new Object();
ecouteurDeFocus.onSetFocus = function(ancienFocus_txt, nouveauFocus_txt) {
ancienFocus_txt.border = false;90 Chapitre 4 : Gestion d’événements
nouveauFocus_txt.border = true;
}
Ce code crée un nouvel objet ActionScript (générique) appelé focusListener. Cet objet
définit pour lui-même une propriété onSetFocus, à laquelle il affecte une fonction. La
fonction prend en compte deux paramètres : une référence au champ de texte qui a perdu le
focus et une référence au champ de texte qui a reçu le focus. La fonction définit la propriété
border du champ de texte qui a perdu le focus à false et la propriété border du champ de
texte qui a reçu le focus à true.
6 Pour enregistrer l’objet focusListener pour recevoir des événements de l’objet Selection,
ajoutez le code suivant au panneau Actions :
Selection.addListener(focusListener);
7 Testez l’animation (Contrôle > Tester l’animation), cliquez dans le premier champ de texte, puis
appuyez sur Tab pour passer d’un champ à l’autre.
Pour désenregistrer un objet d’écoute de sorte qu’il ne reçoive plus d’événements, appelez la
méthode removeListener() de l’objet diffuseur, en lui transmettant le nom de l’objet d’écoute.
objetDiffuseur.removeListener(listenerObject);
Les écouteurs d’événement sont disponibles pour les objets des classes ActionScript suivantes :
Key, Mouse, MovieClipLoader, Selection, TextField, et Stage. Pour obtenir une liste des écouteurs
d’événement disponibles pour chaque classe, consultez les entrées de ces classes dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Utilisation de gestionnaires d’événement de bouton et de clip
Vous pouvez associer des gestionnaires d’événement directement à une occurrence de bouton ou
de clip au moyen des gestionnaires onClipEvent() et on(). Le gestionnaire onClipEvent()
traite les événements de clips alors que le gestionnaire on() traite ceux des boutons. Vous pouvez
également utiliser on() avec des clips pour créer des clips qui reçoivent des événements de
bouton. Pour plus d’informations, consultez Création de clips avec états de bouton, page 91.
Pour utiliser le gestionnaire on() ou onClipEvent(), associez-le directement à une occurrence
d’un bouton ou d’un clip sur la scène et spécifiez l’événement que vous souhaitez gérer pour cette
occurrence. Par exemple, le gestionnaire d’événement on() suivant est exécuté lorsque l’utilisateur
clique sur le bouton auquel il est associé.
on(press) {
trace("Merci de m’avoir pressé.");
}
Vous pouvez spécifier deux événements, voire plus, pour chaque gestionnaire on(), séparés par
des virgules. Le code ActionScript dans un gestionnaire est exécuté lorsque l’un des événements
spécifiés par le gestionnaire se produit. Par exemple, le gestionnaire on() suivant, associé à un
bouton, est exécuté lorsque le pointeur de la souris passe au-dessus puis en dehors du bouton.
on(rollOver, rollOut) {
trace("Vous êtes passé au-dessus ou en dehors");
}
Vous pouvez associer plusieurs gestionnaires à un objet si vous souhaitez exécuter différents scripts
lorsque différents événements se produisent. Par exemple, vous pouvez associer les gestionnaires
onClipEvent() suivants à la même occurrence de clip. Le premier est exécuté au premier
chargement du clip (ou lorsque celui-ci apparaît sur la scène), le second est exécuté lorsque le clip
est vidé de la scène.Création de clips avec états de bouton 91
onClipEvent(load) {
trace("chargé");
}
onClipEvent (unload) {
trace("vidé");
}
Pour obtenir la liste complète des événements pris en charge par les gestionnaires d’événement
on() et onClipEvent(), consultez on(), page 577 et onClipEvent(), page 578.
La gestion d’événement avec on() et onClipEvent() ne provoque pas de conflit avec la gestion
d’événement via des méthodes de gestionnaire d’événement que vous définissez. Imaginons par
exemple que votre fichier SWF comporte un bouton associé à un gestionnaire on(press) qui
déclenche la lecture du fichier SWF. Ce même bouton possède également une méthode onPress,
pour laquelle vous définissez une fonction qui indique une rotation à un objet sur la scène.
Lorsque l’utilisateur clique sur le bouton, la lecture du fichier SWF commence et l’objet tourne
sur lui-même. Selon vos préférences, vous pouvez utiliser on() et onClipEvent(), des méthodes
de gestionnaire d’événement ou ces deux types de gestion d’événement. Toutefois, le domaine des
variables et des objets dans les gestionnaires on() et onClipEvent() n’est pas le même que celui
du gestionnaire d’événement et des écouteurs d’événement. Pour plus d’informations, consultez
Domaine du gestionnaire d’événement, page 92.
Vous pouvez associer onClipEvent() et on() uniquement à des occurrences de clips qui ont été
placées sur la scène au cours de la programmation. Il est impossible d’associer onClipEvent() ou
on() à des occurrences de clips créées à l’exécution (avec la méthode attachMovie, par exemple).
Pour associer des gestionnaires d’événement à des objets créés à l’exécution, utilisez des méthodes
de gestionnaire d’événement ou des écouteurs d’événement. Pour plus d’informations, consultez
Utilisation de méthodes de gestionnaire d’événement, page 87 et Utilisation des écouteurs d’événement,
page 89.
Création de clips avec états de bouton
Lorsque vous associez un gestionnaire on() à un clip ou que vous affectez une fonction à l’un des
gestionnaires d’événement souris MovieClip pour une occurrence de clip, le clip répond à des
événements souris de la même façon qu’un bouton. Vous pouvez également créer des états de
bouton automatiques (Haut, Dessus et Abaissé) dans un clip, en ajoutant les étiquettes d’image
_up, _over et _down au scénario du clip.
Lorsque l’utilisateur déplace la souris au-dessus d’un clip ou qu’il clique sur ce dernier, la tête de
lecture passe à l’image avec l’étiquette d’image appropriée. Pour désigner la zone active qu’utilise
un clip, utilisez la propriété hitArea de la classe MovieClip.
Pour créer des états de bouton dans un clip :
1 Sélectionnez, dans le scénario d’un clip, une image à utiliser comme état de bouton (Haut,
Dessus ou Abaissé).
2 Entrez une étiquette d’image dans l’inspecteur des propriétés(_up, _over ou _down).
3 Pour ajouter d’autres états de bouton, répétez les étapes 1 et 2.
4 Pour que votre clip réponde aux événements souris, effectuez l’une des opérations suivantes :
■ Associez un gestionnaire d’événement on() à l’occurrence du clip, comme indiqué dans
Utilisation de gestionnaires d’événement de bouton et de clip, page 90.92 Chapitre 4 : Gestion d’événements
■ Affectez une fonction à l’un des gestionnaires d’événement souris de l’objet du clip
(onPress, onRelease, etc.), comme indiqué dans Utilisation de méthodes de gestionnaire
d’événement, page 87.
Domaine du gestionnaire d’événement
Le domaine, ou contexte, des variables et commandes que vous déclarez et exécutez dans un
gestionnaire d’événement varie selon le type de gestionnaire d’événement que vous utilisez :
gestionnaires d’événement ou écouteurs d’événement, gestionnaires on() et onClipEvent().
Les fonctions affectées aux méthodes de gestionnaire d’événement et aux écouteurs d’événement
(comme toutes les fonctions ActionScript que vous rédigez) définissent un domaine de variable
locale, contrairement aux gestionnaires on() et onClipEvent().
Par exemple, soit les deux gestionnaires d’événement suivants : le premier est un gestionnaire
d’événement onPress associé à un clip appelé clip_mc, le second est un gestionnaire on() associé
à la même occurrence de clip.
// Associé au scénario de clip parent de clip_mc :
clip_mc.onPress = function () {
var couleur; // variable de fonction locale
couleur = "bleu";
}
// gestionnaire on() associé à clip_mc :
on(press) {
var couleur; // aucun domaine de variable locale
couleur = "bleu";
}
Bien que les deux gestionnaires d’événement contiennent le même code, les résultats sont
différents. Dans le premier cas, la variable couleur est locale par rapport à la fonction définie
pour onPress. Dans le second, dans la mesure où le gestionnaire on() ne définit pas de domaine
de variable locale, la variable a un domaine limité au scénario du clip clip_mc.
Dans le cas des gestionnaires d’événement on() associés à des boutons, plutôt qu’à des clips, le
domaine des variables (à l’instar des appels de fonction et de méthode) est limité au scénario qui
contient l’occurrence de bouton.
Le gestionnaire d’événement on() suivant, par exemple, génère différents résultats selon qu’il est
associé à un clip ou à un bouton. Dans le premier exemple, l’appel de la fonction play() lance la
tête de lecture du scénario qui contient le bouton ; dans le second, l’appel de la fonction play()
démarre le scénario du clip auquel le gestionnaire est associé.
// Associé à un bouton
on(press) {
play(); // exécute le scénario parent
}
// Associé à un clip
on(press) {
play(); // exécute le scénario du clip
}
Autrement dit, lorsqu’il est associé à un objet de bouton, l’appel de la méthode play() s’applique
au scénario qui contient le bouton, c’est-à-dire au scénario parent du bouton. En revanche,
lorsque ce même gestionnaire est associé à un objet de clip, la méthode play() s’applique au clip
qui contient le gestionnaire.Domaine du mot-clé « this » 93
Dans la définition d’une fonction de gestionnaire d’événement ou d’écouteur d’événement, la
fonction play() s’appliquerait au scénario contenant la définition. Imaginons par exemple que la
fonction de gestionnaire d’événement MovieClip.onPress suivante soit déclarée dans le scénario
contenant l’instance de clip monClip.
// Fonction définie dans le scénario du clip :
monClip.onPress = function () {
play(); // exécute le scénario contenant la définition de la fonction
}
Pour exécuter le clip qui définit le gestionnaire d’événement onPress, vous devez faire
explicitement référence à ce clip à l’aide du mot-clé this, comme suit :
monClip.onPress = function () {
this,play(); // exécute le scénario du clip qui définit le gestionnaire
onPress
}
Domaine du mot-clé « this »
Le mot-clé this fait référence à l’objet dans le domaine en cours d’exécution. Selon le type de
technique de gestionnaire d’événement que vous utilisez, this renvoie à différents objets.
Dans une fonction de gestionnaire d’événement ou d’écouteur d’événement, this fait
référence à l’objet qui définit la méthode du gestionnaire d’événement ou de l’écouteur
d’événement. Dans le code suivant, par exemple, this renvoie à monClip.
// gestionnaire d’événement onPress() associé à _level0.monClip :
monClip.onPress = function () {
trace(this); // affiche "_level0.monClip"
}
Dans un gestionnaire on() associé à un clip, this renvoie au clip auquel le gestionnaire on()
est associé.
// Associé au clip "monClip"
on(press) {
trace(this); // affiche "_level0.monClip"
}
Dans un gestionnaire on() associé à un bouton, this renvoie au scénario qui contient le
bouton.
// Associé à un bouton du scénario principal
on(press) {
trace(this); // affiche "_level0"
}94 Chapitre 4 : Gestion d’événements95
CHAPITRE 5
Création d’interactivité avec ActionScript
Dans une animation simple, Macromedia Flash Player lit les scènes et les images du fichier SWF
de façon séquentielle. Dans un fichier SWF interactif, votre public utilise le clavier et la souris
pour atteindre les différentes parties du fichier SWF, pour déplacer des objets, entrer des
informations dans des formulaires et effectuer bien d’autres opérations interactives.
Utilisez ActionScript pour créer des scripts qui indiquent à Flash Player l’action à exécuter
lorsqu’un événement survient. Certains événements pouvant déclencher un script se produisent
lorsque la tête de lecture atteint une image, qu’un clip est chargé ou purgé, ou que l’utilisateur
clique sur un bouton ou appuie sur une touche.
Les scripts peuvent prendre la forme d’une commande unique (pour ordonner la fin de la lecture
d’un fichier SWF, par exemple) ou d’une série de commandes et d’instructions (pour évaluer une
condition avant d’effectuer une action, par exemple). De nombreuses commandes ActionScript
sont simples et permettent de créer des contrôles de base pour un fichier SWF. D’autres actions
exigent une certaine connaissance des langages de programmation et sont destinées à un
développement avancé.
A propos des événements et de l’interaction
Chaque clic de souris ou pression sur une touche entraîne la génération d’un événement. Ces
types d’événements portent généralement le nom d’événements utilisateur, car ils sont générés en
réponse à une action de l’utilisateur final. Vous pouvez utiliser ActionScript pour répondre à ces
événements ou les gérer. Par exemple, lorsqu’un utilisateur clique sur un bouton, il peut être
intéressant d’envoyer la tête de lecture vers une autre image du fichier SWF ou de charger une
nouvelle page dans le navigateur.
Dans un fichier SWF, les boutons, clips et champs de texte génèrent tous des événements auxquels
vous pouvez répondre. ActionScript offre trois manières de gérer les événements : les méthodes
des gestionnaires d’événement, les écouteurs d’événements et les gestionnaires on() et
onClipEvent(). Pour plus d’informations sur les événements et les gestionnaires d’événement,
consultez le Chapitre 4, Gestion d’événements, page 87.
Contrôle de la lecture d’un fichier SWF
Les fonctions ActionScript suivantes vous permettent de contrôler la tête de lecture dans le
scénario et de charger une nouvelle page web dans une fenêtre de navigateur :96 Chapitre 5 : Création d’interactivité avec ActionScript
• Les fonctions gotoAndPlay() et gotoAndStop() envoient la tête de lecture vers une image ou
une scène. Ce sont des fonctions générales que vous pouvez appeler à partir de tout script. Vous
pouvez également utiliser les méthodes MovieClip.gotoAndPlay() et
MovieClip.gotoAndStop() pour naviguer dans le scénario d’un objet clip spécifique.
• Les actions play() et stop() entraînent la lecture et l’arrêt des animations.
• L’action getURL() permet d’atteindre une URL différente.
Déplacement vers une image ou une scène
Pour atteindre une image ou une scène spécifique du fichier SWF, vous pouvez utiliser les
fonctions globales gotoAndPlay() ou gotoAndStop() ou les méthodes équivalentes
gotoAndPlay() et gotoAndStop() de la classe MovieClip. Chaque fonction ou méthode vous
permet de spécifier l’image de la scène en cours à atteindre. Si le document contient plusieurs
scènes, vous pouvez en plus spécifier celle qui est concernée.
L’exemple suivant utilise la fonction globale gotoAndPlay() dans le gestionnaire d’événement
onRelease d’un objet bouton pour envoyer la tête de lecture du scénario contenant le bouton
vers l’image 10.
jump_btn.onRelease = function () {
gotoAndPlay(10);
}
Dans l’exemple suivant, la méthode MovieClip.gotoAndStop() envoie le scénario d’un clip
nommé categories_mc vers l’image 10 puis s’arrête. Lorsque vous utilisez les méthodes
MovieClip gotoAndPlay() et gotoAndStop(), vous devez indiquer l’occurrence à laquelle elles
s’appliquent.
jump_btn.onPress = function () {
categories_mc.gotoAndStop(10);
}
Lecture et arrêt de clips
Sauf indication contraire, une fois démarré, un fichier SWF exécute toutes les images du scénario.
Vous pouvez arrêter ou démarrer un fichier SWF à l’aide des fonctions globales play() et stop()
ou des méthodes MovieClip équivalentes. Ainsi, la fonction ou la méthode stop() vous permet
d’arrêter un fichier SWF à la fin d’une scène avant de passer à la scène suivante. Une fois un
fichier SWF arrêté, il doit être redémarré au moyen de play().
Vous pouvez utiliser les fonctions play() et stop() ou les méthodes MovieClip pour contrôler le
scénario principal ou le scénario de tout clip ou de tout fichier SWF chargé. Le clip que vous
souhaitez contrôler doit posséder un nom d’occurrence et être présent dans le scénario.
Le gestionnaire on(press) suivant associé à un bouton lance la tête de lecture dans le fichier
SWF ou le clip contenant l’objet bouton.
// Associé à une occurrence de bouton
on (press) {
// Lit le scénario contenant le bouton
play();
}Création d’interactivité et d’effets visuels 97
Ce même code donnerait un résultat différent s’il était associé à un clip plutôt qu’à un bouton.
Lorsqu’elles sont associées à un objet bouton, les instructions faites dans un gestionnaire on()
sont par défaut appliquées au scénario contenant le bouton. En revanche, lorsqu’elles sont
associées à un clip, les instructions définies dans un gestionnaire on() sont appliquées au clip
contenant le gestionnaire.
Le gestionnaire on() suivant, par exemple, arrête le scénario du clip auquel il est associé, et non le
scénario contenant le clip.
on (press) {
stop();
}
Il en va de même pour les gestionnaires onClipEvent() associés à des clips. Le code suivant, par
exemple, arrête le scénario du clip contenant le gestionnaire onClipEvent() lors du premier
chargement du clip ou de sa première apparition sur la scène.
onClipEvent(load) {
stop();
}
Déplacement vers une URL différente
Pour ouvrir une page web dans une fenêtre de navigateur ou pour transmettre des données à une
autre application sur une URL définie, utilisez la fonction globale getURL() ou la méthode
MovieClip.getURL(). Vous pouvez, par exemple, lier un bouton à un nouveau site web ou
envoyer des variables de scénario à un script CGI pour traitement comme s’il s’agissait d’un
formulaire HTML. Vous pouvez également spécifier une fenêtre cible, exactement comme pour le
ciblage d’une fenêtre à l’aide d’une balise d’ancrage HTML (<a></a>).
Par exemple, le code suivant ouvre la page d’accueil macromedia.com dans une fenêtre de
navigateur vide lorsque l’utilisateur clique sur l’occurrence de bouton homepage_btn.
homepage_btn.onRelease = function () {
getURL("http://www.macromedia.com", _blank);
}
Vous pouvez également envoyer des variables avec l’URL, en utilisant GET ou POST. Cette
opération est utile si la page que vous chargez provient d’un serveur d’applications, telle une page
ColdFusion Server (CFM), et attend la réception de variables. Supposons par exemple que vous
souhaitiez charger une page CFM nommée addUser.cfm qui attend deux variables de formulaire,
name et age. Pour ce faire, vous pouvez créer un clip nommé variables_mc qui définit ces deux
variables de la façon suivante :
variables_mc.name = "Francois";
variables_mc.age = 32;
Le code suivant charge ensuite addUser.cfm dans une fenêtre de navigateur vide, puis transmet
variables_mc.name et variables_mc.age à la page CFM dans l’en-tête POST.
variables_mc.getURL("addUser.cfm", "_blank", "POST");
Pour plus d’informations, consultez getURL(), page 394.
Création d’interactivité et d’effets visuels
Pour créer de l’interactivité et d’autres effets visuels, vous devez comprendre les techniques
suivantes : 98 Chapitre 5 : Création d’interactivité avec ActionScript
• Création d’un pointeur de souris personnalisé
• Obtention de la position de la souris
• Capture des pressions sur les touches
• Définition des valeurs des couleurs
• Création de commandes audio
• Détection des collisions
• Création d’un outil de dessin de ligne simple
Création d’un pointeur de souris personnalisé
Un pointeur de souris standard est la représentation visuelle par le système d’exploitation de la
position de la souris de l’utilisateur. Si vous remplacez le pointeur de souris standard par un
pointeur réalisé dans Flash, vous pouvez intégrer plus étroitement les mouvements de la souris de
l’utilisateur dans le fichier SWF. L’exemple de cette section utilise un pointeur personnalisé qui
ressemble à une grande flèche. Cependant, la puissance de cette fonctionnalité réside dans la
possibilité de donner au pointeur n’importe quelle apparence (par exemple, un ballon de football
qui doit franchir la ligne de but ou un rouleau de tissu que l’utilisateur tire au-dessus d’un canapé
afin de modifier sa couleur).
Pour créer un pointeur personnalisé, vous devez créer son clip sur la scène. Ensuite, dans
ActionScript, masquez le pointeur standard et associez le clip aux mouvements du curseur
personnalisé. Pour masquer le pointeur standard, utilisez la méthode Mouse.hide() de la classe
Mouse intégrée. Pour utiliser un clip comme pointeur personnalisé, utilisez startDrag()
l’action.
Pour créer un pointeur personnalisé :
1 Créez un clip à utiliser comme pointeur et placez une occurrence du clip sur la scène.
2 Sélectionnez l’occurrence de clip sur la scène.
3 Sélectionnez Fenêtre > Panneaux de développement > Actions pour ouvrir le panneau Actions
si ce dernier n’est pas déjà visible.
4 Tapez ce qui suit dans le panneau Actions :
onClipEvent(load) {
Mouse.hide();
startDrag(this, true);
}
onClipEvent(mouseMove) {
updateAfterEvent();
}
Le premier gestionnaire onClipEvent() masque le pointeur de la souris lors de la première
apparition du clip sur la scène. Le second gestionnaire appelle updateAfterEvent() chaque
fois que l’utilisateur déplace la souris.
La fonction updateAfterEvent() actualise l’écran dès que l’événement spécifié s’est produit,
sans attendre le dessin de l’image suivante, ce qui correspond au comportement par défaut.
Pour plus d’informations, consultez updateAfterEvent(), page 734.
5 Sélectionnez Contrôle > Tester l’animation pour tester votre pointeur personnalisé.Création d’interactivité et d’effets visuels 99
Les boutons fonctionnent encore lorsque vous utilisez un pointeur personnalisé. Il est conseillé de
placer le pointeur personnalisé sur le calque supérieur du scénario, de sorte qu’il s’affiche au
premier plan, par-dessus les boutons et autres objets, lorsque vous le déplacez dans le fichier SWF.
De plus, l’extrémité d’un pointeur personnalisé est le point d’alignement du clip que vous utilisez
comme pointeur. Pour qu’elle corresponde à une partie spécifique du clip, définissez donc les
coordonnées du point d’alignement de façon à ce qu’ils coïncident avec ce point.
Pour plus d’informations sur les méthodes de la classe Mouse, consultez l’entrée correspondante
dans le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Obtention de la position de la souris
Vous pouvez utiliser les propriétés _xmouse et _ymouse pour déterminer la position du pointeur
de la souris (curseur) dans un fichier SWF. Chaque scénario possède une propriété _xmouse et
_ymouse qui renvoie l’emplacement de la souris dans son système de coordonnées. La position est
toujours donnée par rapport au point d’alignement. Dans le scénario principal (_level0), le
point d’alignement se trouve dans le coin supérieur gauche.
Les propriétés _xmouse et _ymouse dans le scénario principal et dans le scénario d’un clip
Les procédures suivantes représentent deux manières d’obtenir la position de la souris.
Pour obtenir la position actuelle de la souris dans le scénario principal :
1 Créez deux champs de texte dynamiques et nommez-les x_pos et y_pos.
2 Sélectionnez Fenêtre > Panneaux de développement > Actions pour ouvrir le panneau Actions
si ce dernier n’est pas déjà visible.
3 Pour renvoyer la position de la souris dans le scénario principal, ajoutez le code suivant à une
image du fichier SWF _level0 :
x_pos = _root._xmouse;
y_pos = _root._ymouse;
Les variables x_pos et y_pos sont utilisées en tant que conteneurs pour stocker les valeurs des
positions de la souris. Vous pouvez utiliser ces variables dans n’importe quel script de votre
document. Dans le gestionnaire onClipEvent() suivant, les valeurs de x_pos et y_pos sont mises
à jour à chaque fois que l’utilisateur déplace la souris.
onClipEvent(mouseMove) {
x_pos = _root._xmouse;100 Chapitre 5 : Création d’interactivité avec ActionScript
y_pos = _root._ymouse;
}
Pour obtenir la position actuelle de la souris dans un clip :
1 Créez un clip.
2 Sélectionnez l’occurrence de clip sur la scène. Utilisez l’inspecteur des propriétés pour le
nommer monClip.
3 Sélectionnez Fenêtre > Panneaux de développement > Actions pour ouvrir le panneau Actions
si ce dernier n’est pas déjà visible.
4 Utilisez le nom de l’occurrence de clip pour renvoyer la position de la souris dans le scénario
principal.
Par exemple, vous pouvez placer l’instruction suivante dans tout scénario du fichier SWF
_level0 pour renvoyer la position _ymouse dans l’occurrence monClip :
x_pos = _root.monClip._xmouse
y_pos = _root.monClip._ymouse
Le code renvoie les positions _xpos et _ypos de la souris par rapport au point d’alignement.
5 Sélectionnez Contrôle > Tester l’animation pour tester l’animation.
Vous pouvez également déterminer la position de la souris dans un clip en utilisant les propriétés
_xmouse et _ymouse dans un événement de clip, comme illustré dans le code suivant :
onClipEvent(enterFrame){
xmousePosition = this._xmouse;
ymousePosition = this._ymouse;
}
Pour plus d’informations sur les propriétés _xmouse et _ymouse, consultez MovieClip._xmouse,
page 537 et MovieClip._ymouse, page 538.
Capture des pressions sur les touches
Vous pouvez utiliser les méthodes de la classe intégrée Key pour détecter la dernière touche sur
laquelle l’utilisateur a appuyé. La classe Key ne requiert aucune fonction constructeur ; appelez
simplement ses méthodes sur la classe même, comme illustré dans l’exemple suivant :
Key.getCode();
Vous pouvez obtenir des codes virtuels ou des valeurs ASCII (American Standard Code for
Information Interchange) des pressions sur les touches :
• Pour obtenir le code réel de la dernière touche enfoncée par l’utilisateur, utilisez la méthode
getCode().
• Pour obtenir la valeur ASCII de la dernière touche enfoncée par l’utilisateur, utilisez la
méthode getAscii().
Un code est affecté à chaque touche physique du clavier. Ainsi, la touche Flèche gauche est
associée au code virtuel 37. L’utilisation d’un code vous permet de vous assurer que les
commandes de votre fichier SWF sont les mêmes sur chaque clavier, quelle que soit la langue ou
la plate-forme utilisée.
Des valeurs ASCII sont affectées aux 127 premiers caractères de chaque jeu de caractères. Les
valeurs ASCII fournissent des informations sur un caractère affiché à l’écran. Par exemple, la lettre
« A » et la lettre « a » ont des valeurs ASCII différentes. Création d’interactivité et d’effets visuels 101
Pour décider des touches que vous allez utiliser et déterminer leurs codes, utilisez l’une des
approches suivantes :
• La liste des codes de touches est publiée dans Annexe C, Touches du clavier et valeurs de code
correspondantes, page 781.
• Utilisez une constante de classe Key. (Dans la boîte à outils Actions, cliquez sur la catégorie
Classes intégrées, sur Animation, sur Touche et sur Constantes.)
• Affectez le gestionnaire onClipEvent() suivant à un clip, puis choisissez Contrôle > Tester
l’animation et appuyez sur la touche souhaitée.
onClipEvent(keyDown) {
trace(Key.getCode());
}
Le code de la touche s’affiche dans le panneau de sortie.
Les méthodes de classe Key sont fréquemment placées dans un gestionnaire d’événement. Dans
l’exemple suivant, l’utilisateur déplace la voiture à l’aide des touches de direction. La méthode
Key.isDown() indique si la touche enfoncée est la flèche orientée vers la droite, la gauche, le haut
ou le bas. Le gestionnaire d’événement, onEnterFrame, détermine la valeur de
Key.isDown(codeDeTouche) à partir des instructions if. En fonction de la valeur, il indique à
Flash Player de mettre à jour la position de la voiture et d’afficher la direction.
La saisie avec les touches du clavier entraîne le déplacement de la voiture.102 Chapitre 5 : Création d’interactivité avec ActionScript
La procédure suivante indique comment capturer les pressions sur les touches pour déplacer un
clip vers le haut, le bas, à gauche ou à droite de la scène, en fonction de la touche fléchée utilisée
(haut, bas, gauche ou droite). Le clip est confiné dans une zone arbitraire d’une largeur de
400 pixels et d’une hauteur de 300 pixels. Par ailleurs, un champ de texte indique le nom de la
touche enfoncée.
Pour créer un clip activé via le clavier :
1 Sur la scène, créez un clip qui se déplacera en réponse aux touches fléchées du clavier.
Dans cet exemple, le nom de l’occurrence de clip est voiture.
2 Sur la scène, créez un champ de texte dynamique qui sera mis à jour en fonction de la direction
de la voiture. Utilisez l’inspecteur des propriétés pour lui donner le nom d’occurrence
display_txt.
Remarque : Ne confondez pas le nom des variables avec celui des occurrences. Pour plus
d’informations, consultez A propos des noms d’occurrence et de variable de champ de texte,
page 140.
3 Sélectionnez l’image 1 dans le scénario et, le cas échéant, choisissez Fenêtre > Panneaux de
développement > Actions pour ouvrir le panneau Actions.
4 Pour déterminer la distance parcourue par la voiture à l’écran après chaque pression sur une
touche, définissez une variable distance et fixez sa valeur initiale à 10.
var distance = 10;
5 Pour créer le gestionnaire d’événement du clip voiture qui vérifie quelle touche de direction
(gauche, droite, bas ou haut) est enfoncée, ajoutez le code suivant au panneau Actions :
voiture.onEnterFrame = function() {
}
6 Ajoutez une instruction with au corps du gestionnaire onEnterFrame et spécifiez voiture
comme objet de l’instruction with.
Le code devrait avoir cette forme :
var distance = 10;
voiture.onEnterFrame = function() {
with (voiture) {
}
}
7 Pour vérifier si la touche de direction vers la droite est enfoncée et déplacer le clip voiture en
conséquence, ajoutez du code au corps de l’instruction with. Le code devrait avoir cette forme :
distance = 10;
voiture.onEnterFrame = function() {
with (voiture) {
if (Key.isDown(Key.RIGHT)) {
_x += distance;
if (_x >= 400) {
_x = 400;
}
_root.display_txt.text = "Droite";
}
}
}Création d’interactivité et d’effets visuels 103
Si la touche fléchée vers la droite est enfoncée, la propriété _x de la voiture est augmentée de la
valeur spécifiée dans la variable distance. L’instruction if suivante teste si la valeur de la
propriété _x du clip est supérieure ou égale à 400 (if(_x >=400)) ; si tel est le cas, sa position
est fixée à 400. De plus, le mot Droite doit apparaître dans le fichier SWF.
8 Adaptez ce code pour vérifier si les autres touches de direction (gauche, haut ou bas) ont été
enfoncées. Le code devrait avoir cette forme :
var distance = 10;
voiture.onEnterFrame = function() {
with (voiture) {
if (Key.isDown(Key.RIGHT)) {
_x += distance;
if (_x >= 400) {
_x = 400;
}
_root.display_txt.text = "Droite";
} else if (Key.isDown(Key.LEFT)) {
_x -= distance;
if (_x < 0) {
_x = 0;
}
_root.display_txt.text = "Gauche";
} else if (Key.isDown(Key.UP)) {
_y -= distance;
if (_y < 0) {
_y = 0 ;
}
_root.display_txt.text = "Haut";
} else if (Key.isDown(Key.DOWN)) {
_y += distance;
if (_y > 300) {
_y = 300;
}
_root.display_txt.text = "Bas";
}
}
}
9 Choisissez Contrôle > Tester l’animation pour tester le fichier.
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
#5 20-08-2008 15:59:02
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Re: Guide de référence sur l'action script de flash
Pour plus d’informations sur les méthodes de la classe Key, consultez l’entrée correspondante dans
le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.104 Chapitre 5 : Création d’interactivité avec ActionScript
Définition des valeurs des couleurs
Vous pouvez utiliser les méthodes de la classe Color intégrée pour définir la couleur d’un clip. La
méthode setRGB() affecte des valeurs RVB (rouge, vert, bleu) hexadécimales au clip. L’exemple
suivant utilise setRGB() pour changer la couleur d’un objet en réponse aux actions de
l’utilisateur.
L’action de bouton crée un objet Color et change la couleur de la voiture en réponse aux actions de
l’utilisateur.
Pour définir la valeur de couleur d’un clip :
1 Sélectionnez un clip sur la scène.
2 Dans l’inspecteur des propriétés, entrez couleurDeVoiture comme nom d’occurrence.
3 Créez un bouton nommé puce de couleur, placez quatre occurrences de ce bouton sur la scène
et nommez-les rouge, vert, bleu et noir.
4 Sélectionnez l’image 1 dans le scénario principal, puis choisissez Fenêtre > Panneaux de
développement > Actions.
5 Pour créer un objet Color qui cible le clip couleurDeVoiture, ajoutez le code suivant au
panneau Actions :
maCouleur = new Color(_root.couleurDeVoiture);
6 Pour que le bouton bleu colore en bleu le clip couleurDeVoiture, ajoutez le code suivant au
panneau Actions :
_root.bleu.onRelease = function(){
maCouleur.setRGB(0x0000ff)
}
La valeur hexadécimale 0x0000ff représente le bleu. Le tableau suivant présente les autres
couleurs que vous pouvez utiliser et leur valeur hexadécimale :
7 Répétez l’étape 6 pour les autres boutons (rouge, vert et noir) pour changer la couleur du clip à
la couleur correspondante. Le code doit maintenant ressembler à ce qui suit :
maCouleur = new Color(_root.couleurDeVoiture)
_root.bleu.onRelease = function(){Création d’interactivité et d’effets visuels 105
maCouleur.setRGB(0x0000ff)
}
_root.rouge.onRelease = function(){
maCouleur.setRGB(0xff0000)
}
_root.vert.onRelease = function(){
maCouleur.setRGB(0x00ff00)
}
_root.noir.onRelease = function(){
maCouleur.setRGB(0x000000)
}
8 Sélectionnez Contrôle > Tester l’animation pour changer la couleur du clip.
Pour plus d’informations sur les méthodes de la classe Color, consultez l’entrée correspondante
dans le Chapitre 12, Dictionnaire ActionScript Présentation, page 211
Création de commandes audio
La classe Sound intégrée permet de contrôler les sons d’un fichier SWF. Pour utiliser les méthodes
de la classe Sound, vous devez d’abord créer un objet Sound. Faites ensuite appel à la méthode
attachSound() pour insérer un son de la bibliothèque dans un fichier SWF pendant sa lecture.
Une chanson est lue lorsque l’utilisateur relâche le bouton de lecture.106 Chapitre 5 : Création d’interactivité avec ActionScript
La méthode setVolume() de la classe Sound contrôle le volume et la méthode setPan() règle la
balance gauche et droite d’un son.
La méthode setVolume() est appelée lorsque l’utilisateur fait glisser le potentiomètre de volume.
Les procédures suivantes expliquent comment créer des contrôles audio semblables à ceux qui
sont présentés ci-dessus.
Pour associer un son à un scénario :
1 Sélectionnez Fichier > Importer pour importer un son.
2 Sélectionnez le son dans la bibliothèque, puis cliquez dessus avec le bouton droit de la souris
(Windows) ou en appuyant sur la touche Contrôle (Macintosh), et choisissez Liaison.
3 Activez les options Exporter pour ActionScript et Exporter dans la première image, puis affectez
au son l’identifiant au_clair_de_la_lune.
4 Ajoutez un bouton sur la scène et appelez-le boutonDeLecture.
5 Ajoutez un bouton sur la scène et appelez-le boutonDarrêt.
6 Ajoutez un clip sur la scène et appelez-le hautParleur.
7 Sélectionnez l’image 1 dans le scénario principal, puis choisissez Fenêtre > Panneaux de
développement > Actions. Ajoutez le code suivant au panneau Actions :
hautParleur.stop();
chanson = new Sound();
chanson.onSoundComplete = function() {
hautParleur.stop();
};
chanson.attachSound("au_clair_de_la_lune");
boutonDeLecture.onRelease = function() {
chanson.start();
hautParleur.play();
};
boutonDArrêt.onRelease = function () {
chanson.stop();
hautParleur.stop();
}Création d’interactivité et d’effets visuels 107
Ce code commence par arrêter le clip du haut-parleur. Il crée ensuite un objet Sound (chanson)
et lui associe le son dont l’identifiant de liaison correspond à au_clair_de_la_lune. Il définit
ensuite un gestionnaire onSoundComplete pour l’objet chanson, qui arrête le clip haut-
parleur une fois que le son est terminé. Enfin, les gestionnaires onRelease associés aux objets
playButton et stopButton démarrent et arrêtent le son à l’aide des méthodes Sound.start()
et Sound.stop(), et lisent et arrêtent le clip haut-parleur.
8 Sélectionnez Contrôle > Tester l’animation pour entendre le son.
Pour créer une commande de volume réglable :
1 Faites glisser un bouton sur la scène.
2 Sélectionnez le bouton et choisissez Modification > Convertir en symbole. N’oubliez pas de
sélectionner le comportement du clip.
Cela crée un clip avec le bouton sur sa première image.
3 Sélectionnez le clip et choisissez Edition > Modifier la sélection.
4 Sélectionnez le bouton et choisissez Fenêtre > Panneaux de développement > Actions.
5 Entrez les actions suivantes :
on (press) {
startDrag(this, false, gauche, haut, droite, bas);
}
on (release) {
stopDrag();
}
Les paramètres de startDrag(), gauche, haut, droite et bas, sont des variables définies dans
une action de clip.
6 Choisissez Edition > Modifier le document pour revenir au scénario principal.
7 Sélectionnez le clip sur la scène.
8 Entrez les actions suivantes :
onClipEvent(load) {
top = _y;
bottom = _y;
left = _x;
right = _x+100;
_x += 100;
}
onClipEvent (enterFrame) {
_parent.song.setVolume(_x-left);
}
9 Sélectionnez Contrôle > Tester l’animation pour utiliser la commande de volume.
Pour créer une commande de balance réglable :
1 Faites glisser un bouton sur la scène.
2 Sélectionnez le bouton et choisissez Insertion > Convertir en symbole. Sélectionnez le clip adéquat.
3 Sélectionnez le clip et choisissez Edition > Modifier le symbole.
4 Sélectionnez le bouton et choisissez Fenêtre > Panneaux de développement > Actions.
5 Entrez les actions suivantes :
on (press) {
startDrag ("", false, left, top, right, bottom);
dragging = true;
}108 Chapitre 5 : Création d’interactivité avec ActionScript
on (release, releaseOutside) {
stopDrag ();
dragging = false;
}
Les paramètres de startDrag(), gauche, haut, droite et bas, sont des variables définies dans
une action de clip.
6 Choisissez Edition > Modifier le document pour revenir au scénario principal.
7 Sélectionnez le clip sur la scène.
8 Entrez les actions suivantes :
onClipEvent(load) {
top=_y;
bottom=_y;
left=_x-50;
right=_x+50;
center=_x;
}
onClipEvent(enterFrame){
if (dragging==true){
_parent.setPan((_x-center)*2);
}
}
9 Sélectionnez Contrôle > Tester l’animation pour utiliser le curseur de balance.
Pour plus d’informations sur les méthodes de la classe Sound, consultez l’entrée correspondante
dans le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Détection des collisions
La méthode hitTest() de la classe MovieClip détecte les collisions dans un fichier SWF. Elle
vérifie si un objet est entré en collision avec un clip et renvoie une valeur booléenne (true ou
false).
Il existe deux situations où il peut être utile de savoir si une collision s’est produite : pour tester si
l’utilisateur a atteint une zone statique précise de la scène, et pour déterminer si un clip en a
atteint un autre. La méthode hitTest() permet de déterminer ces résultats.Création d’interactivité et d’effets visuels 109
Vous pouvez utiliser les paramètres de hitTest() pour définir les coordonnées x et y d’une zone
réactive sur la scène ou utiliser le chemin cible d’un autre clip comme zone réactive. Lorsque vous
définissez x et y, hitTest() renvoie la valeur true si le point identifié par (x,y) n’est pas
transparent. Lorsqu’une cible est transmise à hitTest(), les cadres de délimitation des deux clips
sont comparés. S’ils se chevauchent, hitTest() renvoie la valeur true. S’ils ne se croisent pas,
hitTest() renvoie la valeur false.
« True » apparaît dans le champ de texte lorsque le pointeur de la souris se trouve au-dessus de la
carrosserie de la voiture.
Vous pouvez également utiliser hitTest() pour tester une collision entre deux clips.
« True » apparaît dans le champ de texte lorsqu’un clip en touche un autre.
Les procédures suivantes indiquent comment détecter les collisions, en utilisant une voiture
comme exemple.110 Chapitre 5 : Création d’interactivité avec ActionScript
Pour détecter la collision entre un clip et un point de la scène :
1 Créez un clip sur la scène et entrez champ comme nom d’occurrence dans l’inspecteur des
propriétés.
2 Créez un champ de texte dynamique sur la scène et entrez état comme nom d’occurrence dans
l’inspecteur des propriétés.
3 Sélectionnez, dans le scénario, la première image du calque 1.
4 Sélectionnez Fenêtre > Panneaux de développement > Actions pour ouvrir le panneau Actions
si ce dernier n’est pas déjà visible.
5 Entrez le code suivant dans le panneau Actions :
box.onEnterFrame = function () {
état.text = this.hitTest(_xmouse, _ymouse, true);
}
6 Choisissez Contrôle > Tester l’animation et passez la souris sur le clip pour tester la collision.
La valeur true est affichée lorsque la souris se trouve au-dessus d’un pixel non transparent.
Pour détecter la collision entre deux clips :
1 Faites glisser deux clips jusqu’à la scène et affectez-leur les noms d’occurrence voiture et zone.
2 Créez un champ de texte dynamique sur la scène et entrez état comme nom d’occurrence dans
l’inspecteur des propriétés.
3 Sélectionnez, dans le scénario, la première image du calque 1.
4 Sélectionnez Fenêtre > Panneaux de développement > Actions pour ouvrir le panneau Actions
si ce dernier n’est pas déjà visible.
5 Entrez le code suivant dans le panneau Actions :
zone.onEnterFrame = function () {
état.text=this.hitTest(voiture);
}
voiture.onPress = function (){
this.startDrag(false);
updateAfterEvent();
}
voiture.onRelease = function () {
this.stopDrag();
}
6 Choisissez Contrôle > Tester l’animation et faites glisser le clip pour tester la collision.
Lorsque le cadre de délimitation de la voiture touche celui de la zone, l’état devient true.
Pour plus d’informations, consultez MovieClip.hitTest() dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Création d’un outil de dessin de ligne simple
Vous pouvez utiliser les méthodes de la classe MovieClip pour dessiner des formes et des
remplissages sur la scène en cours de lecture. Vous pouvez ainsi créer des outils de dessin pour les
utilisateurs et tracer des formes dans le fichier SWF en réponse à des événements. Les méthodes
de dessin sont beginFill(), beginGradientFill(), clear(), curveTo(), endFill(),
lineTo(), lineStyle() et moveTo(). Vous pouvez appliquer ces méthodes à toute occurrence de
clip (par exemple, monClip.lineTo()) ou à un niveau (_root.curveTo()).Création d’interactivité et d’effets visuels 111
Les méthodes lineTo() et curveTo() vous permettent respectivement de dessiner des lignes et
des courbes. La méthode lineStyle() permet de spécifier une couleur et une épaisseur de ligne
et un paramètre alpha pour une ligne ou une courbe. La méthode de dessin moveTo() place la
position de dessin actuelle aux coordonnées x et y de scène spécifiées.
Les méthodes beginFill() et beginGradientFill() remplissent respectivement un chemin
fermé avec une couleur de remplissage unie ou dégradée, tandis que endFill() applique le
remplissage spécifié dans le dernier appel à beginFill() ou beginGradientFill(). La méthode
clear() efface ce qui a été dessiné dans l’objet clip spécifié.
Pour plus d’informations, consultez MovieClip.beginFill(), page 487,
MovieClip.beginGradientFill(), page 488, MovieClip.clear(), page 491,
MovieClip.curveTo(), page 494, MovieClip.endFill(), page 497, MovieClip.lineTo(),
page 509, MovieClip.lineStyle(), page 508 et MovieClip.moveTo(), page 513.
Pour créer un outil de dessin de ligne simple :
1 Dans un nouveau document, créez un bouton sur la scène et entrez clear_btn comme nom
d’occurrence dans l’inspecteur des propriétés.
2 Sélectionnez l’image 1 dans le scénario et, le cas échéant, choisissez Fenêtre > Panneaux de
développement > Actions pour ouvrir le panneau Actions.
3 Dans le panneau Actions, entrez le code suivant :
_root.onMouseDown = function() {
_root.lineStyle(5, 0xFF0000, 100);
_root.moveTo(_root._xmouse, _root._ymouse);
isDrawing = true;
};
_root.onMouseMove = function() {
if (isDrawing == true) {
_root.lineTo(_root._xmouse, _root._ymouse);
updateAfterEvent();
}
};
_root.onMouseUp = function() {
isDrawing = false;
};
clear_btn.onRelease = function() {
_root.clear();
};
4 Sélectionnez Contrôle > Tester l’animation pour tester l’animation. Cliquez et faites glisser la
souris pour dessiner une ligne sur la scène. Cliquez sur le bouton pour effacer ce que vous avez
dessiné.112 Chapitre 5 : Création d’interactivité avec ActionScript
Structure d’un exemple de script
Lorsqu’un utilisateur fait glisser la coccinelle vers la prise électrique dans le fichier d’exemple
zapper.swf (disponible dans le guide Utilisation de Flash de l’aide), la coccinelle tombe et la prise
tremble. Le scénario principal ne comprend qu’une image et contient trois objets : la coccinelle ,
la prise et un bouton de réinitialisation. Chacun de ces objets est une occurrence de clip.
Le fichier SWF contient un script associé à l’occurrence bug, comme illustré dans le panneau
Actions suivant :
Panneau Actions et script associé à l’occurrence bug
Le nom de l’occurrence de coccinelle est bug et le nom de l’occurrence de prise est zapper. Dans
le script, la référence à la coccinelle est this, car le script est associé à la coccinelle et le mot
réservé this désigne l’objet qui le contient.
Gestionnaire d’événement
Action
Variable
Instruction conditionnelle if
EvénementStructure d’un exemple de script 113
Il existe deux gestionnaires onClipEvent() avec deux événements différents : load et
enterFrame. Les actions contenues dans l’instruction onClipEvent(load) sont exécutées une
seule fois, au chargement du fichier SWF. Les actions contenues dans l’instruction
onClipEvent(enterFrame) sont exécutées à chaque fois que la tête de lecture entre dans une
image. Même dans un fichier SWF composé d’une image unique, la tête de lecture entre plusieurs
fois dans cette image et le script est exécuté à plusieurs reprises. Les actions suivantes ont lieu dans
chaque gestionnaire onClipEvent() :
onClipEvent(load) Deux variables, initx et inity, sont définies de manière à stocker les
positions x et y initiales de l’occurrence de clip bug. Une fonction est définie et affectée à
l’événement onRelease de l’occurrence Reset. Cette fonction est appelée à chaque clic de la
souris sur le bouton de réinitialisation. La fonction replace la coccinelle en position de départ sur
la scène, réinitialise ses valeurs alpha et de rotation et redéfinit la variable zapped sur la valeur
false.
onClipEvent(enterFrame) Une instruction conditionnelle if utilise la méthode hitTest pour
vérifier si l’occurrence de la coccinelle touche l’occurrence de la prise (_root.zapper). Cette
évaluation peut avoir deux types de résultats, true ou false :
onClipEvent(load) {
initx = _x;
inity = _y;
_root.Reset.onRelease = function() {
zapped = false;
_x = initx;
_y = inity;
_alpha = 100
_rotation = 0;
};
}
Si la méthode hitTest() renvoie la valeur true, la méthode stopDrag() est appelée, la variable
zapper est définie sur la valeur true, les propriétés alpha et rotation sont modifiées et l’exécution
de l’occurrence zapped est lancée.
Si la méthode hitTest() renvoie la valeur false, le code entre {} qui suit immédiatement
l’instruction if n’est pas exécuté.
Deux gestionnaires on() sont associés à l’occurrence bug avec deux événements différents : press
et release. Les actions de l’instruction on(press) sont exécutées une fois le bouton de la souris
appuyé au-dessus de l’occurrence bug. Les actions de l’instruction on(release) sont exécutées
après le relâchement du bouton de la souris au-dessus de l’occurrence bug. Les actions suivantes se
déroulent à l’intérieur de chaque gestionnaire onClipEvent() :
on(press) Une action startDrag() rend la coccinelle déplaçable. Le script étant associé à
l’occurrence bug, le mot-clé this indique que c’est l’occurrence bug qui peut être déplacée :
on (press) {
this.startDrag();
}
on(release) Une action stopDrag() arrête l’action de déplacement :
on (release) {
stopDrag();
}
Pour lire le fichier SWF, consultez le Guide de référence ActionScript, dans l’aide.114 Chapitre 5 : Création d’interactivité avec ActionScriptPARTIE III
Utilisation des objets et des classes
Cette section présente le modèle d’objet d’exécution Macromedia Flash ainsi que ses
fonctionnalités, puis met l’accent sur l’utilisation des clips et du texte. Elle décrit également la
manière de créer vos propres classes et interfaces à l’aide d’ActionScript 2.0.
Chapitre 6: Utilisation des classes intégrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Chapitre 7: Utilisation des clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Chapitre 8: Utilisation du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Chapitre 9: Création de classes avec ActionScript 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
PARTIE III117
CHAPITRE 6
Utilisation des classes intégrées
En plus des principaux éléments de langage, constructions (boucles for et while, par exemple) et
types de données (nombres, chaînes et tableaux) ActionScript décrits précédemment (consultez
Notions de base du langage ActionScript, page 27), ActionScript fournit également plusieurs classes
intégrées ou types de données complexes. Ces classes vous offrent de nombreuses options et
fonctionnalités de scripts.
Certaines de ces classes reposent sur la spécification ECMAScript et sont appelées classes
ActionScript de base. Elles comprennent les classes Array, Boolean, Date et Math. Pour plus
d’informations, consultez Classes de base, page 119.
Les autres classes intégrées ActionScript sont spécifiques à Macromedia Flash et au modèle d’objet
Flash Player. La distinction entre les classes ActionScript de base et les classes spécifiques à Flash
est similaire à celle qui existe entre les classes JavaScript de base et côté client. Tout comme les
classes JavaScript côté client permettent de contrôler l’environnement du client (le navigateur web
et le contenu des pages web), les classes spécifiques à Flash permettent de contrôler l’apparence et
le comportement d’une application Flash à l’exécution.
Ce chapitre présente les classes intégrées ActionScript, passe en revue les tâches qu’elles
permettent d’effectuer et propose des exemples de code. Pour un aperçu de ces classes, consultez
Aperçu des classes intégrées, page 118. Pour un aperçu de l’utilisation des classes et objets en
programmation orientée objet, consultez A propos des classes et des occurrences, page 117.
A propos des classes et des occurrences
En programmation orientée objet, une classe définit une catégorie d’objet. Une classe décrit les
propriétés (données) et le comportement (méthodes) d’un objet, comme un calque d’architecte
décrit les propriétés d’un immeuble. Pour utiliser les propriétés et méthodes définies par une
classe, vous devez tout d’abord créer une occurrence de cette classe. La relation entre une
occurrence et sa classe est similaire à la relation entre une maison et le calque d’architecte
correspondant.
Création d’un nouvel objet
Pour créer une occurrence de classe ActionScript, utilisez l’opérateur new pour appeler la fonction
constructeur de la classe. La fonction constructeur porte toujours le même nom que la classe dont
elle renvoie une occurrence, que vous attribuez généralement à une variable. 118 Chapitre 6 : Utilisation des classes intégrées
Le code suivant crée par exemple un nouvel objet Sound :
var chanson:Sound= new Sound();
Dans certains cas, il n’est pas nécessaire de créer une occurrence de classe pour l’utiliser. Pour plus
d’informations, consultez A propos des membres de classe (membres statiques), page 118.
Accès aux propriétés des objets
Utilisez l’opérateur point (.) pour accéder à la valeur d’une propriété d’objet. Entrez le nom de
l’objet à gauche du point et le nom de la propriété à droite. Par exemple, dans l’instruction
suivante, monObjet représente l’objet et nom la propriété :
monObjet.nom
Le code suivant crée un objet TextField, puis définit sa propriété autoSize sur true.
var mon_txt = new TextField();
mon_txt.autoSize = true;
Vous pouvez également utiliser l’opérateur d’accès tableau ([]) pour accéder aux propriétés d’un
objet. Pour plus d’informations, consultez Opérateurs point et accès tableau, page 51.
Appel des méthodes d’un objet
Vous pouvez appeler une méthode d’objet en utilisant l’opérateur point (.) suivi de la méthode.
Par exemple, le code suivant crée un objet Sound et appelle sa méthode setVolume() :
monSon = new Sound(this);
monSon.setVolume(50);
A propos des membres de classe (membres statiques)
Certaines classes intégrées ActionScript possèdent des membres de classe (ou membres statiques).
Pour invoquer les membres de classe (propriétés et méthodes) ou y accéder, vous utilisez le nom
de la classe, et non l’occurrence de celle-ci. Il ne faut donc pas créer une occurrence de la classe
pour utiliser ces propriétés et méthodes.
Par exemple, toutes les propriétés de la classe Math sont statiques. Le code suivant appelle la
méthode max() de la classe Math pour déterminer lequel de deux nombres est le plus grand.
var plusGrandNombre = Math.max(10, 20);
Aperçu des classes intégrées
Cette section répertorie toutes les classes ActionScript et contient une brève description de chaque
classe et des références croisées menant aux autres sections pertinentes de la documentation.Aperçu des classes intégrées 119
Classes de base
Les classes ActionScript de base sont celles qui sont directement empruntées à ECMAScript. Ces
classes résident dans le sous-dossier Classes intégrées de base de la boîte à outils Actions.
Classe Description
Arguments Tableau contenant les valeurs transmises comme paramètres pour toute
fonction. Consultez l’entrée Classe Arguments dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Array La classe Array contient les méthodes et propriétés réservées aux objets
Array. Consultez l’entrée Classe Array dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Boolean La classe Boolean est une enveloppe pour les valeurs booléennes (true ou
false). Consultez l’entrée Classe Boolean dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Button La classe Button fournit des méthodes et des propriétés permettant d’utiliser
les objets Button. Consultez l’entrée Classe Button dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Date La classe Date donne accès à des valeurs de date et d’heure relatives à l’heure
universelle (GMT) ou au système d’exploitation sur lequel Flash Player
s’exécute. Consultez l’entrée Classe Date dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Error La classe Error contient des informations sur les erreurs survenant dans vos
scripts. En règle générale, vous utilisez l’instruction throw pour générer une
condition d’erreur, que vous pouvez ensuite gérer à l’aide d’une instruction
try..catch..finally. Consultez try..catch..finally et les entrées Classe
Error du Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Function La classe Function est la représentation sous forme de classe de toutes les
fonctions ActionScript, y compris les fonctions Action Script natives et celles
que vous définissez. Consultez l’entrée Classe Function dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Math La classe Math vous permet d’accéder à des constantes et fonctions
mathématiques et de les manipuler. Toutes les propriétés et méthodes de la
classe Math sont statiques et doivent être appelées à l’aide de la syntaxe
Math.méthode(paramètre) ou Math.constante. Consultez l’entrée Classe Math
dans le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Number La classe Number est une enveloppe pour le type de données primitif de
nombre. Consultez l’entrée Classe Number dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
Object La classe Object est à la racine de la hiérarchie de classes ActionScript.
Toutes les autres classes héritent de ses méthodes et propriétés. Consultez
l’entrée Classe Object dans le Chapitre 12, Dictionnaire ActionScript
Présentation, page 211.
String La classe String est une enveloppe pour le type de données primitif de chaîne,
ce qui vous permet d’utiliser les méthodes et les propriétés de l’objet String
pour manipuler les types primitifs de valeurs de chaîne. Consultez l’entrée
Classe String dans le Chapitre 12, Dictionnaire ActionScript Présentation,
page 211.120 Chapitre 6 : Utilisation des classes intégrées
Classes spécifiques à Flash Player
Les tableaux suivants répertorient les classes spécifiques à Flash Player et au modèle d’exécution
Flash. Ces classes sont généralement divisées en quatre catégories : les classes Movie (qui
autorisent un contrôle général des fichiers SWF et de Flash Player), les classes Media (pour
l’utilisation de son et de vidéo), les classes Client-server (pour l’utilisation de XML et d’autres
sources de données externes) et les classes Authoring (qui permettent de contrôler
l’environnement de programmation Flash).
Remarque : Cette catégorisation détermine l’emplacement des classes dans la boîte à outils
Actions ; elle n’a aucune incidence sur leur utilisation.
Classes Movie
Les classes Movie permettent de contrôler la plupart des éléments visuels dans un fichier SWF, y
compris les clips, les champs de texte et les boutons. Elles résident dans le sous-dossier Classes
intégrées > Animation de la boîte à outils Actions.
Classe Description
Accessibility La classe Accessibility gère la communication entre les fichiers SWF et les
applications de lecture d’écran. Conjointement avec la propriété globale
_accProps, les méthodes de cette classe permettent de contrôler les
propriétés accessibles des clips, des boutons et des champs de texte lors de
l’exécution. Consultez _accProps et les entrées Classe Accessibility dans
le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Button Tout bouton d’un fichier SWF est une occurrence de la classe Button. La
classe Button fournit des méthodes, propriétés et gestionnaires
d’événements pour l’utilisation des boutons. Consultez l’entrée Classe Button
dans le Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Color La classe Color vous permet d’extraire et de définir les valeurs des couleurs
RVB des objets d’un clip. Pour plus d’informations, consultez l’entrée Classe
Color du Chapitre 12, Dictionnaire ActionScript Présentation, page 211. Vous
trouverez un exemple d’utilisation de la classe Color pour modifier les
couleurs d’un clip à la section Définition des valeurs des couleurs, page 104.
ContextMenu La classe ContextMenu vous permet d’agir sur le contenu du menu
contextuel de Flash Player. Vous pouvez associer des objets ContextMenu
séparés à des objets MovieClip, Button ou TextField à l’aide de la propriété
menu de ces classes. Vous avez aussi tout loisir d’utiliser la classe
ContextMenuItem pour ajouter des éléments de menu personnalisés à un
objet ContextMenu. Consultez la Classe ContextMenu et Classe
ContextMenuItem les entrées dans le Chapitre 12, Dictionnaire ActionScript
Présentation, page 211.
ContextMenuItem La classe ContextMenuItem vous permet de créer des éléments de menu
dans le menu contextuel de Flash Player. Pour ajouter les éléments de menu
que vous créez à l’aide de cette classe au menu contextuel de Flash Player,
vous utilisez la classe ContextMenu. Consultez les entrées Classe
ContextMenu et Classe ContextMenuItem dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.Aperçu des classes intégrées 121
Key La classe Key propose des méthodes et propriétés permettant d’obtenir des
informations sur le clavier et les touches qui sont enfoncées. Pour plus
d’informations, consultez l’entrée Classe Key dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211. Vous trouverez un exemple de capture
des pressions sur les touches en vue de créer un fichier SWF interactif à la
section Capture des pressions sur les touches, page 100.
LocalConnection La classe LocalConnection permet à deux fichiers SWF qui s’exécutent sur
un même ordinateur de communiquer. Consultez l’entrée Classe
LocalConnection dans le Chapitre 12, Dictionnaire ActionScript Présentation,
page 211.
Mouse La classe Mouse vous permet de contrôler la souris dans un fichier SWF.
Vous pouvez l’utiliser pour masquer ou afficher le pointeur de la souris, par
exemple. Pour plus d’informations, consultez l’entrée Classe Mouse dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211. Vous trouverez
un exemple d’utilisation de la classe Mouse à la section Création d’un pointeur
de souris personnalisé, page 98.
MovieClip Chaque clip d’une animation Flash est une occurrence de la classe MovieClip.
Utilisez les méthodes et propriétés de cette classe pour contrôler les objets
de clip. Consultez le Chapitre 7, Utilisation des clips, page 125 et l’entrée
Classe MovieClip dans le Chapitre 12, Dictionnaire ActionScript Présentation,
page 211.
MovieClipLoader La classe MovieClipLoader vous permet de suivre la progression du
téléchargement des fichiers SWF et JPEG à l’aide d’un mécanisme
d’écouteur d’événement. Consultez Préchargement des fichiers SWF et
JPEG, page 206 et l’entrée Classe MovieClipLoader dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
PrintJob La classe PrintJob vous permet d’imprimer du contenu rendu
dynamiquement, ainsi que des documents de plusieurs pages. Consultez
l’entrée Classe PrintJob dans le Chapitre 12, Dictionnaire ActionScript
Présentation, page 211 et Utilisation de la classe PrintJob d’ActionScript, dans
le guide Utilisation de Flash de l’aide.
Selection La classe Selection vous permet d’extraire et de définir le focus, les étendues
de sélection et les points d’insertion de champs de texte. Consultez l’entrée
Classe Selection dans le Chapitre 12, Dictionnaire ActionScript Présentation,
page 211.
SharedObject La classe SharedObject vous permet de stocker des données localement sur
l’ordinateur client. Consultez l’entrée Classe SharedObject dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Stage La classe Stage fournit des informations sur les dimensions, l’alignement et le
mode d’échelle d’un fichier SWF, et signale les événements de
redimensionnement Stage. Consultez l’entrée Classe Stage dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Classe Description122 Chapitre 6 : Utilisation des classes intégrées
Media classes
Les classes Media permettent de contrôler le son et la vidéo lors de la lecture d’un fichier SWF,
ainsi que d’accéder au microphone et à la caméra de l’utilisateur, le cas échéant. Ces classes
résident dans le sous-dossier Classes intégrées > Support de la boîte à outils Actions.
System La classe System fournit des informations sur Flash Player et sur le système
sur lequel il s’exécute (la résolution d’affichage et la langue système en cours,
par exemple). Elle vous permet aussi d’afficher ou de masquer le panneau
Paramètres Flash Player et de modifier les paramètres de sécurité du fichier
SWF. Consultez l’entrée Classe System dans le Chapitre 12, Dictionnaire
ActionScript Présentation, page 211.
TextField La classe TextField vous permet de contrôler les champs dynamiques et de
saisie de texte. Consultez le Chapitre 8, Utilisation du texte, page 139 et
l’entrée Classe TextField dans le Chapitre 12, Dictionnaire ActionScript
Présentation, page 211.
TextField.StyleSheet La classe TextField.StyleSheet (qui fait partie de la classe TextField) vous
permet de créer et d’appliquer des styles de texte CSS à des textes au format
HTML ou XML. Consultez Formatage de texte avec les feuilles de style en
cascade, page 143 et l’entrée Classe TextField.StyleSheet dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
TextFormat La classe TextFormat vous permet de définir le formatage des caractères et
des paragraphes dans les objets TextField. Consultez Utilisation de la classe
TextFormat, page 141 et l’entrée Classe TextFormat dans le
Chapitre 12, Dictionnaire ActionScript Présentation, page 211.
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
2008 Parisdepannage |Plan du site|Forums |Blog|Lexique ![]()