858
 PROGRAMMATION AVEC ACTIONSCRIPT  3.0

Flash As3 Programming

Embed Size (px)

Citation preview

PROGRAMMATION AVEC ACTIONSCRIPT 3.0

2007 Adobe Systems Incorporated. Tous droits rservs. Programmation avec ActionScript 3.0 Si le prsent guide est fourni avec un logiciel rgi par un contrat dutilisateur final, ce guide ainsi que le logiciel dcrit, sont fournis sous licence et peuvent tre utiliss ou copis uniquement selon les clauses et conditions de la licence. Sauf indication expresse dans le contrat de licence, aucune partie de ce guide ne peut tre reproduite, stocke dans un systme dextraction ni transmise de quelque manire que soit, lectronique, mcanique, par enregistrement ou autre, sans laccord crit pralable dAdobe Systems Incorporated. Veuillez noter que le contenu de ce guide est protg par les lois de copyright mme sil nest pas diffus avec le logiciel comprenant laccord de licence utilisateur final. Le contenu de ce guide est fourni titre dinformation uniquement, peut faire lobjet de modifications sans pravis et ne saurait tre considr comme un engagement quelconque de la part dAdobe Systems Incorporated. Adobe Systems Incorporated dcline toute responsabilit quant aux erreurs ou imprcisions susceptibles dapparatre dans les informations que prsente ce guide. Rappelez-vous que certaines illustrations ou images que vous souhaitez inclure dans votre projet peuvent tre protges par les lois de copyright. Linclusion sans autorisation de tels lments dans vos propres travaux peut porter atteinte aux droits du dtenteur de ce copyright. Veillez obtenir toutes les autorisations ncessaires auprs de ce dernier. Toutes les rfrences aux noms de socits dans les exemples de modles sont fournies titre dillustration uniquement et ne visent aucune entreprise existante. Adobe, le logo Adobe, Flex, Flex Builder et Flash Player sont des marques dposes ou des marques dAdobe Systems Incorporated aux Etats-Unis et/ou dans dautres pays. ActiveX et Windows sont des marques ou des marques dposes de Microsoft Corporation aux Etats-Unis et dans dautres pays. Macintosh est une marque dApple Inc., dpose aux Etats-Unis et dans dautres pays. Toutes les autres marques sont la proprit de leurs dtenteurs respectifs. Technologie de compression et dcompression audio discours utilise sous licence de Nellymoser, Inc. (www.nellymoser.com). Technologie de compression et dcompression vido Sorenson Spark utilise sous licence de Sorenson Media, Inc.

Navigateur Opera Copyright 1995-2002 Opera Software ASA et ses fournisseurs. Tous droits rservs. Adobe Systems Incorporated, 345 Park Avenue, San Jose, Californie 95110, E.-U. Avis aux utilisateurs finaux dpendant du gouvernement des Etats-Unis. Le logiciel et la documentation sont des articles commerciaux , selon la dfinition tablie par larticle 48 C.F.R. 2.101, composs dun logiciel informatique commercial et dune documentation de logiciel informatique commercial , tels que dfinis dans les articles 48 C.F.R. 12.212 ou 48 C.F.R. 227.7202, selon le cas. Conformment aux articles 48 C.F.R. 12.212 ou 48 C.F.R. 227.7202-1 227.7202-4, selon le cas, le logiciel informatique commercial et la documentation de logiciel informatique commercial sont fournis sous licence aux utilisateurs finaux dpendant du gouvernement des Etats-Unis (a) comme articles commerciaux uniquement et (b) avec les seuls droits normalement accords aux utilisateurs finaux, en accord avec les conditions gnrales applicables. Les droits non publis sont rservs conformment aux lois sur le copyright en vigueur aux Etats-Unis. Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, E.-U. Pour les utilisateurs finaux ne dpendant pas du gouvernement des Etats-Unis, Adobe accepte de respecter toutes les lois applicables relatives lgalit des chances, y compris, sil y a lieu, aux dispositions du dcret 11246 et ses modifications, de la section 402 de la loi sur laide la rhabilitation des vtrans du Vietnam (Vietnam Era Veterans Readjustment Assistance Act) de 1974 (38 USC 4212), de la section 503 de la loi de rhabilitation (Rehabilitation Act) de 1973 et ses modifications, et des rglements des articles 41 CFR 60-1 60-60, 60-250 et 60-741. La clause relative la discrimination positive et les rgulations nonces dans la phrase prcdente sont incluses par rfrence.

Table des matires

A propos de ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Utilisation de ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Accs la documentation ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Ressources ActionScript destines la formation . . . . . . . . . . . . . . . . . 19 Chapitre 1: Introduction ActionScript 3.0 . . . . . . . . . . . . . . . . . . 21 A propos dActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Avantages dActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Nouveauts dActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Fonctions du langage de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Fonctions API de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Compatibilit avec les versions prcdentes . . . . . . . . . . . . . . . . . . . . . .27 Chapitre 2: Prise en main dActionScript . . . . . . . . . . . . . . . . . . . 29 Concepts de programmation de base . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Quel est le rle dun programme informatique. . . . . . . . . . . . . . . . . . 29 Variables et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Types de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Utilisation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Mthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Evnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Gestion des vnements de base . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Description du processus de gestion des vnements. . . . . . . . .37 Exemples de gestion dvnements . . . . . . . . . . . . . . . . . . . . . . . . . 41 Cration dinstances dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Elments de programme courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Exemple : Elment de portfolio danimation . . . . . . . . . . . . . . . . . . . . . . 46 Cration dapplications avec ActionScript . . . . . . . . . . . . . . . . . . . . . . . 50 Options dorganisation du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Choix de loutil appropri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Processus de dveloppement ActionScript . . . . . . . . . . . . . . . . . . . 55

3

Cration de vos propres classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Stratgies de conception dune classe . . . . . . . . . . . . . . . . . . . . . . . . 56 Ecriture du code dune classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Suggestions dorganisation des classes . . . . . . . . . . . . . . . . . . . . . . . 59 Exemple : Cration dune application de base . . . . . . . . . . . . . . . . . . . . 60 Excution des exemples suivants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Chapitre 3: Syntaxe et langage ActionScript . . . . . . . . . . . . . . . . 71 Prsentation du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Objets et classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Packages et espaces de nom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Types de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Vrification des types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Classes dynamiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Descriptions des types de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . .101 Conversions de type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 Instructions conditionnelles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 Concepts de fonction de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Paramtres de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Fonctions comme objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Domaine de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Chapitre 4: Programmation oriente objet en ActionScript. . . . 147 Principes de la programmation oriente objet . . . . . . . . . . . . . . . . . . . 148 Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Dfinitions de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Attributs de proprit de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Les mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Les numrations et les classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Les classes des lments incorpors. . . . . . . . . . . . . . . . . . . . . . . . . 169 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Hritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Rubriques avances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Exemple : GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

4

Chapitre 5: Utilisation des dates et heures . . . . . . . . . . . . . . . . . 205 Principes de base des dates et des heures. . . . . . . . . . . . . . . . . . . . . . 205 Gestion des dates calendaires et des heures . . . . . . . . . . . . . . . . . . . . 206 Contrle des intervalles temporels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210 Exemple : une horloge analogique simple. . . . . . . . . . . . . . . . . . . . . . . .213 Chapitre 6: Utilisation des chanes . . . . . . . . . . . . . . . . . . . . . . . . 217 Principes de base des chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 Cration de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 La proprit length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Utilisation de caractres dans des chanes. . . . . . . . . . . . . . . . . . . . . . 222 Comparaison de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Rcupration des reprsentations de chane dautres objets. . . . . . 223 Concatnation de chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Recherche de sous-chanes et de motifs dans des chanes . . . . . . . 225 Conversion de la casse dans des chanes. . . . . . . . . . . . . . . . . . . . . . . 230 Exemple : ASCII art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Chapitre 7: Utilisation de tableaux . . . . . . . . . . . . . . . . . . . . . . . . 239 Principes de base des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Tableaux indexs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Tableaux associatifs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 Tableaux multidimensionnels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Clonage de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Rubriques avances :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Exemple : PlayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Chapitre 8: Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Principes de base de la gestion des erreurs . . . . . . . . . . . . . . . . . . . . . 272 Types derreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Gestion des erreurs dans ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . 277 Elments de gestion des erreurs ActionScript 3.0. . . . . . . . . . . . . 278 Stratgies de gestion des erreurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Utilisation de la version de dbogage de Flash Player . . . . . . . . . . . . 280 Gestion des erreurs synchrones dans une application. . . . . . . . . . . . .281 Cration de classes derreur personnalises . . . . . . . . . . . . . . . . . . . . 286 Rponse des vnements derreurs et au statut . . . . . . . . . . . . . . . 288

5

Comparaison des classes Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292 Classes Error de base ECMAScript . . . . . . . . . . . . . . . . . . . . . . . . . .292 Classes Error de base dActionScript. . . . . . . . . . . . . . . . . . . . . . . . 295 Classes Error du package flash.error . . . . . . . . . . . . . . . . . . . . . . . . .296 Exemple : Application CustomErrors . . . . . . . . . . . . . . . . . . . . . . . . . . .298 Chapitre 9: Utilisation dexpressions rgulires . . . . . . . . . . . . 305 Principes de base des expressions rgulires. . . . . . . . . . . . . . . . . . . 306 Syntaxe dexpression rgulire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Cration dune instance dune expression rgulire . . . . . . . . . . . . 310 Caractres, caractres de remplacement et mtasquences. . . . .311 Classes de caractre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Quantificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Permutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Groupes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Indicateurs et proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322 Mthodes dutilisation dexpressions rgulires avec des chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Exemple : Un analyseur Wiki. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328 Chapitre 10: Gestion dvnements. . . . . . . . . . . . . . . . . . . . . . . 335 Principes de base de la gestion des vnements. . . . . . . . . . . . . . . . .336 Variation de la gestion dvnements dans ActionScript 3.0 par rapport aux versions antrieures . . . . . . . . . . . . . . . . . . . . . . . . . . . .339 Flux dvnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343 Objets vnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345 Ecouteurs dvnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Exemple : un rveil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Chapitre 11: Utilisation de XML . . . . . . . . . . . . . . . . . . . . . . . . . . .367 Principes de base de XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368 Lapproche E4X concernant le traitement XML. . . . . . . . . . . . . . . . . . 372 Objets XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 XMLList, objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Initialisation de variables XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Assemblage et transformation dobjets XML . . . . . . . . . . . . . . . . . . . 380 Parcours de structures XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Utilisation despaces de nom XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Conversion de type XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .388 Lecture de documents XML externes. . . . . . . . . . . . . . . . . . . . . . . . . . 390 Exemple : Chargement de donnes RSS depuis Internet . . . . . . . . 390

6

Chapitre 12: Programmation de laffichage . . . . . . . . . . . . . . . . 395 Bases de la programmation de laffichage . . . . . . . . . . . . . . . . . . . . . . 395 Classes daffichage de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401 Avantages de lutilisation de la liste daffichage. . . . . . . . . . . . . . . . . . 403 Utilisation des objets daffichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Proprits et mthodes de la classe DisplayObject. . . . . . . . . . . . 406 Ajout dobjets daffichage la liste daffichage . . . . . . . . . . . . . . . . 407 Utilisation des conteneurs dobjets daffichage. . . . . . . . . . . . . . . . 407 Traverse de la liste daffichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Dfinition des proprits de la scne . . . . . . . . . . . . . . . . . . . . . . . . .413 Gestion des vnements des objets daffichage . . . . . . . . . . . . . . . 417 Choix dune sous-classe de DisplayObject . . . . . . . . . . . . . . . . . . . .418 Manipulation des objets daffichage. . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Modification de la position . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Dfilement horizontal et vertical des objets daffichage . . . . . . . . 426 Redimensionnement et mise lchelle des objets . . . . . . . . . . . . 428 Contrle de la distorsion lors de la mise lchelle . . . . . . . . . . 429 Mise en cache des objets daffichage . . . . . . . . . . . . . . . . . . . . . . . . 432 Pertinence de la mise en cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Activation de la mise en cache sous forme de bitmap . . . . . . . 435 Dfinition dune couleur darrire-plan opaque . . . . . . . . . . . . . 435 Application de modes de fondu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Modification des couleurs des objets daffichage. . . . . . . . . . . . . . 437 Modification par code des valeurs des couleurs. . . . . . . . . . . . . 438 Modification par code des effets de couleur et de luminosit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Rotation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Application deffets de fondu des objets . . . . . . . . . . . . . . . . . . . . 440 Masquage des objets daffichage. . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Animation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Chargement dynamique de contenu afficher . . . . . . . . . . . . . . . . . . 446 Chargement dobjets daffichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Suivi de la progression du chargement. . . . . . . . . . . . . . . . . . . . . . . 447 Spcification du contexte de chargement . . . . . . . . . . . . . . . . . . . . 449 Exemple : SpriteArranger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451 Chapitre 13: Utilisation de la gomtrie. . . . . . . . . . . . . . . . . . . . 459 Principes de base de la gomtrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Utilisation des objets Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Utilisation dobjets Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Utilisation des objets Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Exemple : Application dune transformation de matrice un objet daffichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

7

Chapitre 14: Utilisation de lAPI de dessin . . . . . . . . . . . . . . . . . 475 Les bases dutilisation de lAPI de dessin. . . . . . . . . . . . . . . . . . . . . . . . 476 Prsentation de la classe Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Dessin de lignes et de courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479 Dessin de formes laide des mthodes intgres . . . . . . . . . . . . . . .482 Cration de lignes et de remplissages en dgrad. . . . . . . . . . . . . . . .483 Utilisation de la classe Math avec les mthodes de dessin . . . . . . . 489 Animation avec lAPI de dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Exemple : gnrateur algorithmique deffets visuels . . . . . . . . . . . . . . 491 Chapitre 15: Filtrage des objets daffichage . . . . . . . . . . . . . . . . 495 Bases du filtrage des objets daffichage. . . . . . . . . . . . . . . . . . . . . . . . 495 Cration et application de filtres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .497 Cration dun nouveau filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .497 Application dun filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Le fonctionnement des filtres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Problmes potentiels dutilisation des filtres. . . . . . . . . . . . . . . . . . 500 Filtres daffichage disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Filtre de biseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Filtre de flou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Filtre dombre porte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Filtre de rayonnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Filtre de biseau dgrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Filtre de rayonnement dgrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507 Exemple : combinaison de filtres de base . . . . . . . . . . . . . . . . . . . . 508 Filtre matrice de couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Filtre de convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511 Filtre mappage de dplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Exemple : Filter Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 Chapitre 16: Utilisation des clips . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Principes de base des clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Utilisation des objets MovieClip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Contrle de la lecture dun clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Utilisation des squences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .527 Cration dobjets MovieClip laide dActionScript. . . . . . . . . . . . . . .528 Exportation des symboles de bibliothque pour ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .528 Chargement dun fichier SWF externe . . . . . . . . . . . . . . . . . . . . . . . . . .532 Exemple : RuntimeAssetsExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . .533

8

Chapitre 17: Utilisation de texte . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Les bases de lutilisation du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 Affichage du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Types de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Modification du contenu dun champ texte . . . . . . . . . . . . . . . . . . . 544 Affichage du texte HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 Utilisation dimages dans des champs texte . . . . . . . . . . . . . . . . . . 545 Dfilement du texte dans un champ texte . . . . . . . . . . . . . . . . . . . . 546 Slection et manipulation de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Capture de la saisie de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Restriction de la saisie de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Formatage du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .551 Attribution de formats texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .551 Application de feuilles de style en cascade . . . . . . . . . . . . . . . . . . . 552 Chargement de fichiers CSS externes . . . . . . . . . . . . . . . . . . . . . . . 553 Formatage de plages de texte au sein dun champ texte . . . . . . . 555 Fonctions avances daffichage de texte . . . . . . . . . . . . . . . . . . . . . . . 556 Utilisation de texte statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 Exemple : formatage du texte dans le style journal . . . . . . . . . . . . 560 Lecture du fichier CSS externe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .561 Disposition des lments de larticle sur la page . . . . . . . . . . . . . . 564 Modification de la taille de la police en fonction de la taille du champ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 Rpartition du texte sur plusieurs colonnes . . . . . . . . . . . . . . . . . . . 567 Chapitre 18: Utilisation des graphismes bitmap . . . . . . . . . . . . . . 571 Les bases de lutilisation des bitmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Les classes Bitmap et BitmapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Manipulation des pixels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Manipulation individuelle de pixels. . . . . . . . . . . . . . . . . . . . . . . . . . . 577 Dtection de collision au niveau des pixels . . . . . . . . . . . . . . . . . . . 579 Copie de donnes bitmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .581 Cration de textures avec les fonctions de bruit alatoire . . . . . . . . . 582 Dfilement du contenu dimages bitmap. . . . . . . . . . . . . . . . . . . . . . . . 584 Exemple : animation dobjets Sprite laide dune image bitmap hors cran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Chapitre 19: Utilisation de la vido. . . . . . . . . . . . . . . . . . . . . . . . 587 Principes de base de la vido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 Prsentation du format vido Flash (FLV) . . . . . . . . . . . . . . . . . . . . . . .591 Prsentation de la classe Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592

9

Chargement de fichiers vido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Contrle de la lecture de la vido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Dtection de la fin dun flux vido . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Lecture de fichiers vido en flux continu . . . . . . . . . . . . . . . . . . . . . . . 596 Prsentation des points de repre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .597 Cration de mthodes de rappel pour les gestionnaires dvnements onCuePoint et onMetaData . . . . . . . . . . . . . . . . . . . . . .598 Dfinir la proprit client de lobjet NetStream comme Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Crer une classe et dfinir des mthodes pour grer les mthodes de rappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 tendre la classe NetStream et lui ajouter des mthodes pour grer les mthodes de rappel . . . . . . . . . . . . . . . . . . . . . . . . . 601 tendre la classe NetStream et la rendre dynamique. . . . . . . . . . 602 Dfinir la proprit client de lobjet NetStream comme this. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 Utilisation des points de repre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 Utilisation des mtadonnes de la vido . . . . . . . . . . . . . . . . . . . . . . . 605 Capture dun signal vido provenant de la camra de lutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 Prsentation de la classe Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 Affichage du signal provenant de la camra . . . . . . . . . . . . . . . . . . . 610 Conception dune application grant une camra locale . . . . . . . . 610 tablissement dune connexion avec la camra de lutilisateur . . .611 Vrification de la prsence de camras . . . . . . . . . . . . . . . . . . . . . . . .611 Dtection de lautorisation daccder la camra. . . . . . . . . . . . . . 612 Optimisation de la qualit dimage vido . . . . . . . . . . . . . . . . . . . . . . 614 Suivi des conditions de lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 Envoi de vido un serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 Rubriques avances : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 Compatibilit de Flash Player avec les fichiers FLV cods . . . . . . 617 La configuration de fichier FLV pour lhbergement sur un serveur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 Le ciblage des fichiers FLV locaux sur Macintosh . . . . . . . . . . . . . 619 Exemple : Video Jukebox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 Chapitre 20: Utilisation du son . . . . . . . . . . . . . . . . . . . . . . . . . . .627 Principes de base de lutilisation du son . . . . . . . . . . . . . . . . . . . . . . . . .628 Prsentation de larchitecture audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 Chargement de fichiers audio externes . . . . . . . . . . . . . . . . . . . . . . . . .633 Utilisation des sons incorpors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .636 Utilisation de fichiers audio de lecture en continu . . . . . . . . . . . . . . . . 637

10

Lecture de sons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 Pause et reprise dun son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 Surveillance de la lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Arrt de sons diffuss en continu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 Scurit lors du chargement et de la lecture des sons. . . . . . . . . . . . 642 Contrle du volume du son et de la balance . . . . . . . . . . . . . . . . . . . . . 643 Utilisation des mtadonnes audio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 Accs aux donnes audio brutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Capture de lentre de son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .651 Accs un microphone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .651 Acheminement de laudio du microphone vers des haut-parleurs locaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 Modification de laudio du microphone . . . . . . . . . . . . . . . . . . . . . . . 653 Dtection de lactivit du microphone. . . . . . . . . . . . . . . . . . . . . . . . 653 Envoi daudio vers et depuis une passerelle multimdia . . . . . . . . 655 Exemple : Podcast Player. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 Lecture de donnes RSS pour une chane de balado . . . . . . . . . . 657 Simplification de la lecture et du chargement du son laide de la classe SoundFacade . . . . . . . . . . . . . . . . . . . . . . . . 657 Affichage de la progression de la lecture . . . . . . . . . . . . . . . . . . . . . .661 Interruption et reprise de la lecture. . . . . . . . . . . . . . . . . . . . . . . . . . . 662 Extension de lexemple Podcast Player . . . . . . . . . . . . . . . . . . . . . . 663 Chapitre 21: Capture des donnes saisies par lutilisateur . . . . 665 Principes de base de la saisie utilisateur . . . . . . . . . . . . . . . . . . . . . . . . Capture de la saisie au clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Capture des entres de souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple : WordSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 667 670 675

Chapitre 22: Rseau et communication . . . . . . . . . . . . . . . . . . . 679 Principes de base de la mise en rseau et de la communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 Utilisation de donnes externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 Connexion dautres instances Flash Player. . . . . . . . . . . . . . . . . . . . 690 Connexions socket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 Stockage des donnes locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 Utilisation des chargements et tlchargements de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 Exemple : cration dun client Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 Exemple : chargement et tlchargement de fichiers . . . . . . . . . . . . . 721

11

Chapitre 23: Environnement du systme client. . . . . . . . . . . . . . 731 Principes de base de lenvironnement du systme client . . . . . . . . . . 731 Utilisation de la classe System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 Utilisation de la classe Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 Utilisation de la classe ApplicationDomain . . . . . . . . . . . . . . . . . . . . . . 736 Utilisation de la classe IME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .740 Exemple : dtection des capacits du systme . . . . . . . . . . . . . . . . . .746 Chapitre 24: Impression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 Principes de base de limpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 Impression dune page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 Tches Flash Player et impression systme . . . . . . . . . . . . . . . . . . . . .755 Dfinition de la taille, de lchelle et de lorientation . . . . . . . . . . . . . . 758 Exemple : Impression sur plusieurs pages . . . . . . . . . . . . . . . . . . . . . . . 761 Exemple : Redimensionnement, recadrage et ajustement . . . . . . . . . 764 Chapitre 25: Utilisation de lAPI externe . . . . . . . . . . . . . . . . . . .767 Principes de base de lutilisation de lAPI externe . . . . . . . . . . . . . . . . 768 Avantages de lAPI externe et conditions requises . . . . . . . . . . . . . . . 772 Utilisation de la classe ExternalInterface . . . . . . . . . . . . . . . . . . . . . . . . 773 Obtention dinformations sur le conteneur externe . . . . . . . . . . . . . 774 Appel de code externe partir dActionScript . . . . . . . . . . . . . . . . . 774 Appel du code ActionScript partir du conteneur . . . . . . . . . . . . . 775 Format XML de lAPI externe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 Exemple : utilisation de lAPI externe dans un conteneur de page Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 Exemple : utilisation de lAPI externe avec un conteneur ActiveX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 Chapitre 26: La scurit dans Flash Player . . . . . . . . . . . . . . . . .797 Prsentation de la scurit dans Flash Player . . . . . . . . . . . . . . . . . . .798 Prsentation des contrles dautorisation . . . . . . . . . . . . . . . . . . . . . . . 801 Sandboxes de scurit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812 Restriction des API de rseau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 Scurit du mode plein cran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 Chargement de contenu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818 Programmation croise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .822 Accs aux mdias chargs comme sil sagissait de donnes. . . . . .826 Chargement des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .829 Chargement de contenu incorpor partir de fichiers SWF imports dans un domaine de scurit . . . . . . . . . . . . . . . . . . . .832

12

Utilisation de contenus existants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dfinition des autorisations LocalConnection . . . . . . . . . . . . . . . . . . . Contrle de laccs aux scripts dans une page Web hte. . . . . . . . . Objets partags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accs la camra, au microphone, au presse-papiers, la souris et au clavier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

833 833 834 836 838

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839

13

14

A propos de ce manuelCe manuel peut servir de base au dveloppement dapplications avec ActionScript 3.0. Il est prfrable de matriser les concepts de programmation gnraux (types de donnes, variables, boucles et fonctions) afin de mieux comprendre les ides et techniques dcrites. Il est galement conseill de comprendre les concepts de programmation orients objet (classes et hritage). La connaissance dActionScript 1.0 ou ActionScript 2.0 est utile mais pas ncessaire.

ContenuUtilisation de ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Accs la documentation ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Ressources ActionScript destines la formation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

15

Utilisation de ce manuelLes chapitres de ce manuel sont structurs en groupes logiques (indiqus ci-dessous) afin de faciliter la recherche de sections de documentation ActionScript connexes :Chapitres Chapitres 1 4, prsentation de la programmation avec ActionScript Description Dcrit les concepts ActionScript 3.0 de base, y compris la syntaxe, les instructions et les oprateurs du langage, la spcification de langage ECMAScript version 4, la programmation ActionScript oriente objet et la nouvelle faon de grer des objets daffichage sur la liste daffichage Adobe Flash Player 9. Dcrit les types de donnes de niveau suprieur dans ActionScript 3.0 qui font galement partie de la spcification ECMAScript. Dcrit les fonctions importantes mises en uvre dans des packages et des classes propres Adobe Flash Player 9, notamment la gestion dvnements, la mise en rseau et les communications, le fichier dE/S, linterface externe, le modle de scurit de lapplication, etc.

Chapitres 5 10, classes et types de donnes ActionScript 3.0 de base Chapitres 11 26, API de Flash Player

Ce manuel contient galement de nombreux fichiers dexemple qui dcrivent des concepts de programmation dapplications pour des classes importantes ou couramment utilises. Les fichiers dexemple sont prpars de faon ce que vous puissez les charger et les utiliser plus facilement avec Adobe Flash CS3 Professional. Ils peuvent inclure des fichiers enveloppes. Nanmoins, lexemple de code de base est du code ActionScript 3.0 pur que vous pouvez utiliser dans lenvironnement de dveloppement de votre choix. ActionScript 3.0 peut tre crit et compil de plusieurs faons diffrentes :

En utilisant lenvironnement de dveloppement dAdobe Flex Builder 2 En utilisant un diteur de texte et un compilateur de ligne de commande (celui fourni avec Flex Builder 2, par exemple) En utilisant loutil de programmation Adobe Flash CS3 Professional

Pour plus dinformations sur les environnements de dveloppement dActionScript, voir Chapitre 1, Introduction ActionScript 3.0 .

16

A propos de ce manuel

Pour comprendre les exemples de code fournis dans ce manuel, vous navez pas besoin de savoir utiliser les environnements de dveloppement intgrs pour ActionScript (Flex Builder ou loutil de cration Flash, par exemple). En revanche, vous pouvez consulter la documentation relative ces outils pour savoir comment les utiliser pour crire et compiler du code ActionScript 3.0. Pour plus dinformations, voir Accs la documentation ActionScript , la page 17.

Accs la documentation ActionScriptEtant donn que ce manuel traite principalement de la description dActionScript 3.0 qui est un langage de programmation orient objet riche et puissant, il ne dcrit pas de faon dtaille le processus de dveloppement de lapplication ou le flux de travail au sein dune architecture serveur ou dun outil particulier. Par consquent, outre la Programmation avec ActionScript 3.0, vous pouvez consulter dautres sources de documentation lorsque vous concevez, dveloppez, testez et dployez des applications ActionScript 3.0.

Documentation ActionScript 3.0Ce manuel dcrit les concepts qui sous-tendent le langage de programmation ActionScript 3.0 et fournit des dtails et des exemples dimplmentation illustrant les fonctions importantes du langage. Nanmoins, il ne constitue pas un guide de rfrence du langage complet. Pour cela, consultez la Rfrence du langage et des composants ActionScript 3.0, qui dcrit chaque classe, chaque mthode, chaque proprit et chaque vnement dans le langage. La Rfrence du langage et des composants ActionScript 3.0 fournit des informations de rfrence dtailles sur le langage de base, les composants Flash (dans les packages fl) et les API de Flash Player (dans les packages flash).

Documentation FlashSi vous utilisez lenvironnement de dveloppement Flash, vous pouvez consulter les manuels suivants :ManuelUtilisation de Flash

DescriptionDcrit comment dvelopper vos applications Web dynamiques dans lenvironnement de programmation de Flash Dcrit lutilisation spcifique du langage ActionScript 3.0 et de lAPI de base de Flash Player

Programmation avec ActionScript 3.0

Accs la documentation ActionScript

17

ManuelRfrence du langage et des composants ActionScript 3.0 Utilisation des composants ActionScript 3.0 Formation ActionScript 2.0 dans Adobe Flash

DescriptionFournit des exemples de code, dutilisation et de syntaxe pour les composants de Flash et lAPI dActionScript 3.0 Explique comment utiliser les composants pour dvelopper des applications Flash Passe en revue les principes gnraux de la syntaxe ActionScript 2.0 et explique comment utiliser ce langage pour intervenir sur diffrents types dobjet Fournit des exemples de code, dutilisation et de syntaxe pour les composants de Flash et lAPI dActionScript 2.0 Explique de faon dtaille comment utiliser les composants ActionScript 2.0 pour dvelopper des applications Flash Dcrit chaque composant disponible dans larchitecture des composants Adobe, version 2, avec son API Dcrit les objets, les mthodes et les proprits disponibles dans lAPI de JavaScript Explique comment utiliser Adobe Flash Lite 2.x pour dvelopper des applications et fournit des exemples de code, dutilisation et de syntaxe pour les fonctions ActionScript disponibles avec Flash Lite 2.x

Guide de rfrence du langage ActionScript 2.0 Utilisation des composants ActionScript 2.0

Rfrence du langage des composants ActionScript 2.0 Extension de Flash Prise en main de Flash Lite 2.x

Dveloppement dapplications Flash Lite 2.0 Explique comment dvelopper des applications Flash Lite 2.x Introduction ActionScript Flash Lite 2.x Explique comment dvelopper des applications avec Flash Lite 2.x et dcrit toutes les fonctions ActionScript disponibles pour les dveloppeurs de Flash Lite 2.x Fournit des exemples de code, dutilisation et de syntaxe pour lAPI dActionScript 2.0 disponible dans Flash Lite 2.x Prsente Flash Lite 1.x et dcrit comment tester votre contenu laide de lmulateur CS3 dAdobe Device Central

Rfrence du langage ActionScript Flash Lite 2.x Prise en main de Flash Lite 1.x

18

A propos de ce manuel

ManuelDveloppement dapplications Flash Lite 1.x

DescriptionDcrit comment dvelopper des applications pour des priphriques mobiles laide de Flash Lite 1.x Explique comment utiliser ActionScript dans des applications Flash Lite 1.x et dcrit toutes les fonctions ActionScript disponibles avec Flash Lite 1.x Fournit la syntaxe et lutilisation dlments ActionScript disponibles avec Flash Lite 1.x

Formation ActionScript Flash Lite 1.x

Guide de rfrence du langage ActionScript Flash Lite 1.x

Ressources ActionScript destines la formationOutre le contenu de ces manuels, Adobe fournit des articles, des ides de conception et des exemples mis jour rgulirement dans le Ple de dveloppement et le Ple de cration Adobe.

Ple de dveloppement AdobeLe Ple de dveloppement dAdobe constitue votre ressource pour consulter les dernires informations concernant ActionScript, des articles sur le dveloppement dapplication et des informations sur des problmes importants. Consultez le Ple de dveloppement ladresse www.adobe.com/go/developer_fr.

Ple de cration AdobeConsultez les dernires nouveauts en matire de design numrique et danimations. Parcourez les uvres dartistes renomms, dcouvrez les nouvelles tendances de design et consolidez vos connaissances laide de didacticiels, de flux de travail cls et de techniques avances. Vrifiez deux fois par mois si de nouveaux didacticiels et articles ainsi que des pices de galerie dinspiration sont disponibles. Consultez le Ple de cration ladresse www.adobe.com/go/designcenter_fr.

Ressources ActionScript destines la formation

19

20

A propos de ce manuel

CHAPITRE 1

Introduction ActionScript 3.0Ce chapitre offre une prsentation gnrale dActionScript 3.0, la version la plus rcente et la plus rvolutionnaire dActionScript.

1

ContenuA propos dActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Avantages dActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Nouveauts dActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Compatibilit avec les versions prcdentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

A propos dActionScriptActionScript est un langage de programmation destin lenvironnement dexcution dAdobe Flash Player. Il assure linteractivit, le traitement des donnes et bien dautres fonctions du contenu Flash et dans les applications associes. ActionScript est excut par la machine virtuelle ActionScript, un composant de Flash Player. Le code ActionScript est gnralement compil en pseudo-code binaire (une sorte de langage de programmation crit et compris par les ordinateurs) par un compilateur, par exemple celui intgr dans Adobe Flash CS3 Professional ou Adobe Flex Builder, ou celui fourni dans le kit de dveloppement Adobe Flex SDK et les services de donnes Flex Data Services. Le pseudo-code binaire est incorpor aux fichiers SWF, qui sont excut par Flash Player dans lenvironnement dexcution. ActionScript 3.0 constitue un modle de programmation solide, bien connu des dveloppeurs dots des connaissances lmentaires de la programmation oriente objet. Les fonctions principales dActionScript 3.0 sont les suivantes :

Une nouvelle machine virtuelle ActionScript, nomme AVM2, qui exploite un nouveau jeu dinstructions de pseudo-code binaire et amliore grandement les performances.

21

Une base de code de compilation plus moderne, davantage en accord avec la norme ECMAScript (ECMA 262) et qui accomplit de meilleures optimisations que les versions antrieures du compilateur. Une interface de programmation (API) tendue et amliore, avec contrle de bas niveau des objets et un vritable modle orient objet. Un langage de base reposant sur la future version 4 de la spcification ECMAScript (ECMA-262). Une API XML reposant sur la spcification ECMAScript pour XML (E4X) (ECMA-357 niveau 2). E4X est une extension de langage dECMAScript qui ajoute XML comme type de donnes natif. Un modle dvnements fond sur la spcification dvnements du modle dobjet de document (DOM, Document Object Model) niveau 3.

Avantages dActionScript 3.0Les possibilits dActionScript 3.0 dpassent largement les fonctions de programmation des versions prcdentes. Cette version est conue pour faciliter la cration dapplications trs complexes impliquant dimportants jeux de donnes et des bases de code orientes objet et rutilisables. Si ActionScript 3.0 nest pas indispensable lexcution de contenu dans Adobe Flash Player 9, il ouvre nanmoins la voie des amliorations de performance uniquement disponibles dans AVM2, la nouvelle machine virtuelle. Le code dActionScript 3.0 peut sexcuter jusqu dix fois plus vite que le code des versions antrieures dActionScript. Lancienne version de la machine virtuelle, AVM1, excute le code ActionScript 1.0 et ActionScript 2.0. Elle est prise en charge par Flash Player 9 pour assurer la compatibilit ascendante avec le contenu existant. Pour plus dinformations, voir Compatibilit avec les versions prcdentes , la page 27.

22

Introduction ActionScript 3.0

Nouveauts dActionScript 3.0Bien que de nombreuses classes et fonctions dActionScript 3.0 seront familires aux programmeurs dActionScript, son architecture et sa conceptualisation diffrent des versions prcdentes. Parmi les amliorations dActionScript 3.0, on compte de nouvelles fonctions du langage de base et une API Flash Player avance, qui accrot le contrle des objets de bas niveau.

Fonctions du langage de baseLe langage de base dfinit les lments de construction fondamentaux du langage de programmation, par exemple les arguments, expressions, conditions, boucles et types. ActionScript 3.0 contient de nombreuses fonctions qui acclrent le processus de dveloppement.

Exceptions dexcutionActionScript 3.0 peut signaler davantage de conditions derreur que les versions prcdentes dActionScript. Utilises pour les conditions derreur courantes, les exceptions dexcution amliorent la procdure de dbogage et vous permettent de dvelopper des applications susceptibles de grer les erreurs de manire fiable. Les erreurs dexcution peuvent fournir des traces dempilement qui identifient le fichier source et le numro de ligne, pour un reprage plus rapide des erreurs.

Types dexcutionDans ActionScript 2.0, les annotations de type visaient avant tout aider le dveloppeur ; lors de lexcution, toutes les valeurs taient types dynamiquement. Dans ActionScript 3.0, les informations de type sont prserves lors de lexcution et utilises plusieurs fins. Flash Player 9 effectue une vrification du type dexcution afin damliorer la scurit du systme quant aux types. Les informations de type servent galement reprsenter les variables dans les reprsentations machine natives, ce qui accrot les performances et rduit lutilisation de la mmoire.

Nouveauts dActionScript 3.0

23

Classes scellesActionScript 3.0 introduit le concept de classe scelle. Une telle classe possde uniquement un jeu fixe de proprits et de mthodes, dfinies lors de la compilation. Il est impossible dajouter dautres proprits et mthodes. Ainsi, la vrification effectue au moment de la compilation est plus stricte et garantit une plus grande robustesse des programmes. Lutilisation de la mmoire est galement optimise puisque la table de hachage nest pas requise pour chaque instance dobjet. Les classes dynamiques sont galement disponibles, par le biais du mot-cl dynamic. Bien que scelles par dfaut, toutes les classes dActionScript 3.0 peuvent tre dclares dynamiques grce au mot-cl dynamic.

Fermetures de mthodesActionScript 3.0 permet lutilisation dune fermeture de mthode qui se rappelle automatiquement linstance de lobjet dorigine. Cette fonction savre utile dans le traitement des vnements. Dans ActionScript 2.0, les fermetures de mthode ne gardaient pas la trace de linstance dobjet partir de laquelle il tait extrait, ce qui provoquait un comportement inattendu lors de lappel de la fermeture de mthode. La classe mx.utils.Delegate tait une solution prise, qui nest dsormais plus ncessaire.

ECMAScript pour XML (E4X)ActionScript 3.0 intgre ECMAScript pour XML (E4X), rcemment normalis sous le nom ECMA-357. E4X offre un jeu dlments de langage naturels et courants qui permettent de manipuler XML. Contrairement aux API classiques danalyse XML, XML et E4X fonctionnent la manire dun type de donnes natif du langage. E4X simplifie le dveloppement dapplications exploitant XML grce une rduction drastique du volume de code requis. Pour plus dinformations sur lintgration dE4X dans ActionScript 3.0, voir Chapitre 11, Utilisation de XML , la page 367. Pour visualiser la spcification E4X dECMA, consultez le site www.ecma-international.org.

Expressions rguliresActionScript 3.0 inclut une prise en charge native des expressions rgulires afin dacclrer la recherche et la manipulation des chanes. Dans ActionScript 3.0, cette prise en charge suit la version 3 de la spcification de langage ECMAScript (ECMA-262).

24

Introduction ActionScript 3.0

Espaces de nomsLes espaces de noms sont semblables aux spcificateurs daccs classiques qui assurent le contrle de visibilit des dclarations (public, private, protected). Ils fonctionnent comme des spcificateurs daccs personnaliss, qui portent le nom de votre choix. Les espaces de noms sont dots dun identifiant de ressource universel (URI, Universal Resource Identifier) afin dviter les collisions. Ils servent galement reprsenter les espaces de noms XML en cas dutilisation dE4X.

Nouveaux types de primitivesActionScript 2.0 utilise un seul type numrique, Number, un nombre en virgule flottante deux dcimales. ActionScript 3.0 comprend les types int et uint. Le type int est un entier sign 32 bits qui permet au code ActionScript de profiter de la rapidit de traitement mathmatique de lunit centrale. Il savre pratique pour les compteurs de boucles et les variables utilisant des entiers. Le type uint est un type dentier non sign 32 bits, utile pour les valeurs de couleurs RVB, les compteurs doctets, etc.

Fonctions API de Flash PlayerLAPI Flash Player dActionScript 3.0 contient un grand nombre de nouvelles classes qui vous permettent de contrler les objets de bas niveau. Larchitecture du langage est compltement nouvelle et plus intuitive. Ces nouvelles classes tant trop nombreuses pour autoriser une prsentation dtaille ce stade, les sections ci-aprs mettent en avant quelques changements significatifs.

Modle dvnements DOM3Le modle dvnements Document Object Model de niveau 3 (DOM3) offre une mthode standard de gnration et de traitement des messages dvnement, qui permet aux objets composant les applications dinteragir et de communiquer tout en conservant leur tat et en ragissant aux changements. Etabli partir des spcifications dvnements DOM niveau 3 du World Wide Web Consortium, ce modle fournit un mcanisme plus clair et plus efficace que les systmes dvnement disponibles dans les versions antrieures dActionScript. Les vnements et vnements derreur se trouvent dans le package flash.events. La structure des composants Flash utilise le mme modle dvnements que lAPI de Flash Player ; ainsi le systme dvnements est unifi sur lensemble de la plate-forme Flash.

Nouveauts dActionScript 3.0

25

API de liste daffichageLAPI daccs la liste daffichage Flash Player, cest--dire larborescence contenant tous les lments visuels dune application Flash, est constitue de classes permettant de manipuler les primitives visuelles dans Flash. La nouvelle classe Sprite est un lment de construction lger, semblable la classe MovieClip mais plus adapte la classe de base des composants dinterface. La nouvelle classe Shape reprsente des formes vectorielles brutes. Il est possible dinstancier ces classes naturellement laide de loprateur new, mais aussi de les redfinir dynamiquement comme parent tout moment. Grce la gestion de profondeur dsormais automatique et intgre Flash Player, le rendu daffectation de numros de profondeur nest plus ncessaire. De nouvelles mthodes permettent de spcifier et de grer lordre z des objets.

Gestion des donnes et contenus dynamiquesActionScript 3.0 comprend des mcanismes de chargement et de gestion des actifs et des donnes au sein de lapplication Flash qui se caractrisent par leur intuitivit et leur cohrence dans lensemble de lAPI. La nouvelle classe Loader propose un unique mcanisme de chargement des fichiers SWF et des actifs dimage, et permet daccder des informations dtailles sur le contenu charg. La classe URLLoader offre un mcanisme distinct de chargement du texte et des donnes binaires dans les applications orientes donnes. La classe Socket permet la lecture et lcriture des donnes binaires dans les sockets de serveur, quel que soit le format.

Accs aux donnes de bas niveauDe nombreuses API permettent daccder des donnes de bas niveau jusquici indisponibles dans ActionScript. Pour le tlchargement de donnes, la classe URLStream, mise en oeuvre par URLLoader, donne accs aux donnes sous forme binaire brute pendant le tlchargement. Avec la classe ByteArray, vous pouvez optimiser la lecture, lcriture et la manipulation des donnes binaires. La nouvelle API Sound assure le contrle prcis du son par le biais des classes SoundChannel et SoundMixer. De nouvelles API lies la scurit fournissent des informations sur les droits de scurit dun fichier SWF ou du contenu charg, pour une gestion plus efficace des erreurs de scurit.

26

Introduction ActionScript 3.0

Utilisation du texteActionScript 3.0 contient un package flash.text destin lensemble des API relatives au texte. La classe TextLineMetrics fournit des dimensions dtailles pour les lignes de texte dun champ texte ; elle remplace la mthode TextField.getLineMetrics() dans ActionScript 2.0. La classe TextField contient plusieurs nouvelles mthodes de bas niveau intressantes, qui peuvent fournir des informations spcifiques sur une ligne de texte ou un simple caractre dans un champ texte. Parmi ces mthodes, on compte notamment les suivantes : getCharBoundaries(), qui renvoie un rectangle reprsentant le cadre de slection dun caractre, getCharIndexAtPoint(), qui renvoie lindex dun caractre un point donn et getFirstCharInParagraph(), qui renvoie lindex du premier caractre dun paragraphe. Les mthodes de niveau de ligne incluent getLineLength(), qui renvoie le nombre de caractres dune ligne de texte donne, et getLineText(), qui renvoie le texte de la ligne spcifie. La nouvelle classe Font permet de grer les polices incorpores des fichiers SWF.

Compatibilit avec les versions prcdentesComme toujours, Flash Player garantit une compatibilit totale avec les versions prcdentes et les contenus publis antrieurement. Tous les contenus lisibles dans les anciennes versions de Flash Player sexcutent dans Flash Player 9. Lintroduction dActionScript 3.0 dans cette dernire version prsente cependant quelques problmes dinteroprabilit entre les contenus anciens et nouveaux lus dans Flash Player 9. Les problmes de compatibilit sont les suivants :

Un mme fichier SWF ne peut combiner du code ActionScript 1.0 ou 2.0 et du code ActionScript 3.0. Le code ActionScript 3.0 peut charger un fichier SWF crit en ActionScript 1.0 ou 2.0, mais ne peut accder aux variables et fonctions de ce fichier. Les fichiers SWF crits en ActionScript 1.0 ou 2.0 ne peuvent charger des fichiers SWF crits en ActionScript 3.0. Cela a pour consquence que les fichiers SWF crs dans Flash 8 ou Flex Builder version 1.5 ou antrieure ne peuvent charger des fichiers SWF ActionScript 3.0. Il existe une seule exception cette rgle : un fichier SWF ActionScript 2.0 peut se remplacer par un fichier SWF ActionScript 3.0 condition que le fichier ActionScript 2.0 nest effectu aucun chargement quelque niveau que ce soit. Pour ce faire, le fichier SWF ActionScript 2.0 doit appeler loadMovieNum() et passer la valeur 0 au paramtre level.

Compatibilit avec les versions prcdentes

27

En gnral, les fichiers SWF crits en ActionScript 1.0 ou 2.0 doivent faire lobjet dune migration sils sont destins fonctionner avec des fichiers SWF crits en ActionScript 3.0. Imaginez par exemple que vous ayez cr un lecteur de mdia avec ActionScript 2.0. Ce lecteur peut charger de nombreux contenus galement crs laide dActionScript 2.0. Mais vous ne pouvez pas crer un contenu avec ActionScript 3.0 et le charger dans ce lecteur. Vous devez migrer le lecteur vers ActionScript 3.0. Nanmoins, si vous avez cr un lecteur de mdia avec ActionScript 3.0, ce lecteur peut effectuer de simples chargements de votre contenu ActionScript 2.0.

Le tableau ci-aprs rcapitule les limitations des versions prcdentes de Flash Player relatives au chargement de nouveaux contenus et lexcution de code, ainsi que les restrictions lies la programmation croise entre les fichiers SWF crits avec diffrentes versions dActionScript.Fonctionnalit prise en charge Environnement dexcutionFlash Player 7 Peut charger les fichiers SWF pour Machine virtuelle incluse Excute les fichiers SWF crits en ActionScript version 7 et antrieure AVM1 1.0 et 2.0 Flash Player 8 version 8 et antrieure AVM1 1.0 et 2.0 Flash Player 9 version 9 et antrieure AVM1 et AVM2 1.0, 2.0 et 3.0

Fonctionnalit prise en charge*

Contenu cr dansActionScript 1.0 et 2.0 ActionScript 3.0 ActionScript 1.0 et 2.0 et ActionScript 3.0 ActionScript 3.0

Peut charger du contenu et excuter le code de contenus cr dans Peut programmer le contenu cr dans *

ActionScript 1.0 et 2.0 uniquement ActionScript 1.0 et 2.0 uniquement

Contenu lisible dans Flash Player version 9 ou ultrieure. Le contenu lisible dans Flash Player version 8 ou antrieure peut tre charg, affich, excut et programm avec ActionScript 1.0 et 2.0 uniquement. ActionScript 3.0 via LocalConnection ActionScript 1.0 et 2.0 via LocalConnection

28

Introduction ActionScript 3.0

CHAPITRE 2

Prise en main dActionScriptCe chapitre vise vous familiariser avec la programmation dActionScript et vous offrir les informations ncessaires la comprhension des concepts et des exemples prsents dans le reste de ce manuel. Nous commencerons par voquer les concepts de base de la programmation, tels quils sappliquent ActionScript. Nous verrons aussi les principes fondamentaux qui rgissent lorganisation et la construction dune application ActionScript.

2

ContenuConcepts de programmation de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Utilisation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Elments de programme courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Exemple : Elment de portfolio danimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Cration dapplications avec ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Cration de vos propres classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Exemple : Cration dune application de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Excution des exemples suivants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Concepts de programmation de baseActionScript tant un langage de programmation, il vous sera plus facile de lapprendre si vous matrisez dj quelques concepts gnraux de programmation.

Quel est le rle dun programme informatiquePour commencer, il est intressant davoir une ide conceptuelle de la nature et du rle dun programme informatique. Un tel programme prsente deux aspects principaux :

Il sagit dune srie dinstructions ou dtapes que lordinateur doit effectuer. Chaque tape implique terme la manipulation dinformations ou de donnes.

29

Dans un sens gnral, un programme informatique nest rien dautre quune liste dactions pas pas que vous ordonnez lordinateur, qui les excute une une. Chacune de ces actions reprsente une instruction. Comme vous le verrez tout au long de ce manuel, dans ActionScript, chaque instruction se termine par un point-virgule. Par nature, le seul rle dune instruction dun programme consiste manipuler quelques donnes stockes dans la mmoire de lordinateur. Voici un exemple simple : vous pouvez demander lordinateur dajouter deux nombres et de stoker le rsultat dans sa mmoire. Dans un cas de figure plus compliqu, imaginez un rectangle dessin sur lcran ; vous crivez un programme pour le dplacer un autre endroit de lcran. Lordinateur garde une trace de certaines informations relatives au rectangle : les coordonnes x, y de sa position, sa largeur et sa longueur, sa couleur, etc. Chacune de ces informations est stocke dans la mmoire de lordinateur. Un programme qui dplacerait le rectangle vers un autre emplacement comprendrait des procdures du type remplacer la coordonne x par 200, remplacer la coordonne y par 150 , cest--dire qui spcifieraient de nouvelles valeurs pour les coordonnes x et y. Bien entendu, lordinateur agit sur ces donnes pour effectivement modifier limage lcran en fonction de ces chiffres. Cependant, pour ce qui nous intresse, il est suffisant de savoir que le dplacement dun rectangle sur lcran nimplique rellement que la modification de quelques bits de donnes dans la mmoire de lordinateur.

Variables et constantesLa programmation reposant sur la modification dinformations dans la mmoire de lordinateur, il est ncessaire dtablir une reprsentation de chaque information au sein du programme. Une variable est un nom qui reprsente une valeur dans la mmoire de lordinateur. Lorsque lon crit des instructions visant manipuler des valeurs, on crit le nom de la variable plutt que la valeur. Chaque fois que lordinateur rencontre le nom de la variable dans le programme, il cherche dans sa mmoire la valeur utiliser. Si vous disposez par exemple de deux variables nommes value1 et value2, chacune contenant un nombre, vous pouvez additionner ces deux nombres laide de linstruction suivante :value1 + value2

Lorsquil excute vritablement la procdure, lordinateur recherche les valeurs correspondant chaque variable et les ajoute. Dans ActionScript 3.0, une variable se compose de trois lments :

La nom de la variable Le type de donnes qui peut tre stock dans la variable La valeur relle stocke dans la mmoire de lordinateur

30

Prise en main dActionScript

Nous venons de voir comment lordinateur utilise le nom comme une balise demplacement destine la valeur. Le type de donnes a galement une importance. Lorsque vous crez une variable ActionScript, vous spcifiez le type de donnes quelle contiendra. A partir de l, les instructions de votre programme peuvent uniquement stocker ce type de donnes dans la variable considre et la valeur peut tre manipule selon les caractristiques associes ce type de donnes. Dans ActionScript, la cration dune variable (on parle galement de dclaration de variable) seffectue laide de linstruction var :var value1:Number;

Dans ce cas, nous indiquons lordinateur quil doit crer une variable value1, qui contiendra uniquement des donnes Number, un type de donnes spcialement dfini dans ActionScript. Il est possible de stocker immdiatement une valeur dans la variable :var value2:Number = 17;

Adobe Flash CS3 Professional offre une autre mthode de dclaration des variables. Lorsque vous placez un symbole de clip, un symbole de bouton ou un champ texte sur la scne, vous pouvez lui attribuer un nom doccurrence dans linspecteur Proprits. Derrire les squences, Flash cre une variable du mme nom que le nom doccurrence, que vous pouvez utiliser dans votre code ActionScript pour faire rfrence llment de la scne. Par exemple, si un symbole de clip se trouve sur la scne et que vous lui attribuez le nom doccurrence rocketShip, chaque fois que vous utilisez la variable rocketShip dans votre code ActionScript, cest en fait ce clip que vous manipulez.

Types de donnesDans ActionScript, de nombreux types de donnes sont votre disposition pour la cration de variables. Certains dentre eux peuvent tre considrs comme simples ou fondamentaux :

String : une valeur textuelle, telle quun nom ou le texte dun chapitre de livre Numeric : ActionScript 3.0 inclut trois types de donnes spcifiques aux valeurs numriques :

Number : toute valeur numrique, y compris les valeurs avec ou sans fraction int : un nombre entier (sans fraction) uint : un nombre entier non sign , cest--dire un nombre qui ne peut tre ngatif

Boolean : une valeur vrai/faux, qui indique par exemple si une instruction Switch est active ou si deux valeurs sont gales

Concepts de programmation de base

31

Les types de donnes simples reprsentent une seule information : par exemple, un seul nombre ou une seule squence de texte. Cependant, la majorit des types de donnes dfinis dans ActionScript peuvent tre considrs comme complexes puisquils reprsentent un ensemble de valeurs regroupes. Par exemple, une variable du type Date reprsente une valeur unique, un point temporel. Nanmoins, la valeur de date est reprsente par diffrentes valeurs : le jour, le mois, lanne, les heures, les minutes, les secondes, etc., et toutes correspondent des nombres distincts. Ainsi, bien que nous percevions une date comme une valeur unique (et quil soit possible de la traiter comme telle en crant une variable Date), lordinateur, en interne, la considre comme un groupe de valeurs qui, ensemble, dfinissent une seule date. La plupart des types de donnes intgrs et ceux crs par les programmeurs, sont des types de date complexes. Voici quelques exemples de types de donnes complexes que vous pourriez rencontrer :

MovieClip : un symbole de clip TextField : un champ texte dynamique ou saisi SimpleButton : un symbole de bouton Date : une information relative un point temporel (date et heure)

Deux termes sont souvent utiliss comme synonymes de type de donnes : classe et objet. Une classe est tout simplement la dfinition dun type de donnes. Il sagit dun modle applicable tous les types dobjets du type de donnes, comme si lon dclarait : toutes les variables du type de donnes Exemple prsentent les caractristiques suivantes : A, B et C . A linverse, un objet nest quune instance de classe : une variable dont le type de donnes est MovieClip peut tre dcrite comme un objet MovieClip. Les exemples ci-aprs dcrivent la mme chose :

Le type de donnes de la variable myVariable est Number. La variable myVariable est une instance de Number. La variable myVariable est un objet Number. La variable myVariable est une instance de la classe Number.

32

Prise en main dActionScript

Utilisation des objetsActionScript constitue ce que lon appelle un langage de programmation orient objet. Ce terme dsigne une simple approche de la programmation, rien dautre quune manire dorganiser le code dun programme laide dobjets. Nous avons dfini plus haut un programme informatique comme une srie de procdures ou dinstructions que lordinateur effectue. Nous pouvons alors considrer quun programme informatique nest quune longue liste dinstructions. Dans le cas de la programmation oriente objet, les instructions du programme se divisent nanmoins en diffrents objets : le code tant rassembl en groupes de fonctionnalits, un mme conteneur runit des types de fonctionnalits et des informations connexes. En fait, si vous avez travaill avec des symboles dans Flash, vous savez dj manipuler les objets. Imaginons que vous ayez dfini un symbole de clip, par exemple le dessin dun rectangle, et que vous en ayez plac une copie sur la scne. Ce symbole de clip constitue aussi un objet (au sens littral) dans ActionScript ; il sagit dune instance de la classe MovieClip. Vous avez la possibilit de modifier plusieurs caractristiques du clip. Sil est slectionn, vous pouvez par exemple modifier certaines valeurs de linspecteur Proprits, telles que la coordonne x ou la largeur, ou encore diffrents rglages de couleur comme la transparence alpha ou lapplication dun filtre dombre porte. Dautres outils Flash vous permettent deffectuer davantage de modifications, par exemple loutil Transformer librement pour faire pivoter le rectangle. Toutes ces actions de transformation du symbole de clip disponibles dans lenvironnement de programmation de Flash sont galement disponibles dans ActionScript. Pour les utiliser, vous devez modifier les donnes runies dans un ensemble appel objet MovieClip. Dans la programmation oriente objet que propose ActionScript, chaque classe comprend trois types de caractristiques :

Proprits Mthodes Evnements

Pris ensemble, ces lments servent grer les donnes que le programme utilise, et dterminer les actions excuter ainsi que lordre dexcution.

Utilisation des objets

33

PropritsUne proprit reprsente lune des donnes runies dans un objet. Un objet song, par exemple, peut prsenter des proprits nommes artist et title. La classe MovieClip possde des proprits telles que rotation, x, width et alpha. Les proprits sutilisent comme des variables individuelles ; on pourrait mme envisager les proprits comme les variables enfant dun objet. Voici des exemples de code ActionScript utilisant des proprits. Cette ligne de code dplace le MovieClip nomm square vers la coordonne x 100 pixels :square.x = 100;

Le code ci-aprs utilise la proprit rotation pour faire pivoter le MovieClip square de manire lui donner la mme orientation que le MovieClip triangle :square.rotation = triangle.rotation;

Ce code altre lchelle horizontale du MovieClip square pour quil soit une fois et demie plus large que prcdemment :square.scaleX = 1.5;

Vous remarquerez la structure commune : vous utilisez une variable (square, triangle) pour nommer lobjet, suivie dun point (.), puis le nom de la proprit (x, rotation, scaleX). Le point, ou oprateur point, sert indiquer que vous accdez lun des lments enfant dun objet. La structure dans son ensemble, nom de variable-point-nom de proprit est utilise telle une variable, comme le nom dune valeur unique dans la mmoire de lordinateur.

MthodesUne mthode est une action qui peut tre effectue par un objet. Par exemple, si vous avez labor dans Flash un symbole de clip dont le scnario contient plusieurs cadres et animations, ce clip peut tre lu ou arrt, ou recevoir linstruction de placer la tte de lecture sur un cadre donn. Le code ci-dessous indique au MovieClip nomm shortFilm de commencer la lecture :shortFilm.play();

Cette ligne de code arrte la lecture du MovieClip shortFilm (la tte de lecture sarrte lendroit o elle se trouve, comme lorsque vous suspendez une vido) :shortFilm.stop();

Ce code-ci indique au MovieClip shortFilm de placer la tte de lecture sur Frame 1 et darrter la lecture (comme si vous rembobiniez une vido) :shortFilm.gotoAndStop(1);

34

Prise en main dActionScript

Comme vous pouvez le constater, laccs aux mthodes, comme pour les proprits, seffectue en crivant le nom de lobjet (une variable), suivi dun point puis du nom de la mthode et de parenthses. Les parenthses servent indiquer que vous appelez la mthode , cest--dire que vous demandez lobjet deffectuer une action. Certaines valeurs (ou variables) sont places dans ces parenthses de manire transmettre des informations supplmentaires ncessaires lexcution de laction. On appelle ces valeurs des paramtres de mthode. Par exemple, la mthode gotoAndStop() doit savoir quel cadre atteindre ; un paramtre est donc requis dans les parenthses. Dautres mthodes, telles play() et stop(), ont une signification univoque et ne requirent donc aucune information complmentaire. Elles sont nanmoins suivies de parenthses. Contrairement aux proprits (et aux variables), les mthodes ne servent pas despaces rservs. Certaines mthodes peuvent cependant effectuer des calculs et renvoyer des rsultats pouvant servir de variables. Par exemple, la mthode toString() de la classe Number convertit une valeur numrique en une reprsentation textuelle :var numericData:Number = 9; var textData:String = numericData.toString();

Par exemple, vous pouvez utiliser la mthode toString() si vous souhaitez afficher la valeur dune variable Number dans un champ texte lcran. La proprit text de la classe TextField (qui reprsente le contenu textuel rel affich lcran) se dfinit comme une chane (String), de manire quelle ne puisse contenir que des valeurs textuelles. Cette ligne de code convertit la valeur numrique de la variable numericData en texte, puis la fait apparatre lcran dans lobjet TextField nomm calculatorDisplay :calculatorDisplay.text = numericData.toString();

EvnementsTel que nous lavons dcrit, un programme informatique est une srie dinstructions que lordinateur effectue pas pas. Certains programmes trs simples ne sont rien de plus : lordinateur effectue quelques procdures, puis le programme se termine. Toutefois, les programmes ActionScript sont conus pour poursuivre leur excution, dans lattente dune saisie utilisateur, par exemple. Les vnements sont des mcanismes qui dterminent quelles instructions lordinateur doit suivre et quand.

Utilisation des objets

35

Par essence, des vnements sont des faits qui surviennent et auxquels ActionScript peut rpondre parce quil les connat. De nombreux dvnements sont lis linteraction de lutilisateur, par exemple un clic sur un bouton ou une pression sur une touche du clavier. Il existe nanmoins dautres types dvnement. Par exemple, si vous utilisez ActionScript pour charger une image externe, un vnement est capable de vous prvenir lorsque le chargement de limage est termin. Pendant lexcution dun programme ActionScript, Adobe Flash Player attend que des vnements se produisent et lorsque cest le cas, il excute le code ActionScript que vous avez spcifi en rponse.

Gestion des vnements de baseLa gestion des vnements est la technique qui permet de spcifier les actions excuter en rponse des vnements particuliers. Lors de lcriture de code ActionScript en vue de la gestion des vnements, trois lments importants sont identifier :

La source de lvnement : quel objet sera concern par lvnement ? Par exemple, sur quel bouton aura lieu le clic ou quel objet Loader charge-t-il limage ? La source de lvnement est galement appele cible de lvnement car elle reprsente lobjet o lvnement est cibl par Flash Player (l o lvnement a lieu). Lvnement : que doit-il se passer, quel vnement voulez-vous rpondre ? Ce point est trs important, car de nombreux objets dclenchent plusieurs vnements. La rponse : quelles actions doivent faire suite loccurrence de lvnement ?

Tout code ActionScript de gestion des vnements doit contenir ces trois lments et respecte la structure de base suivante (les lments en gras sont des espaces rservs remplir selon le cas envisag) :function eventResponse(eventObject:EventType):void { // Les actions excutes en rponse lvnement apparaissent ici. } eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

Ce code a deux rles. Tout dabord, il dfinit une fonction, qui est une manire de spcifier les actions excuter en rponse lvnement. Ensuite, il appelle la mthode addEventListener() de lobjet source, inscrivant ainsi la fonction auprs de lvnement spcifi de manire que lorsque lvnement survient, les actions de la fonction ont lieu. Nous allons tudier chacun de ces rles en dtail.

36

Prise en main dActionScript

Une fonction sert regrouper des actions sous un nom unique, un raccourci qui vous permet de les excuter. La fonction est identique la mthode, cette exception prs quelle nest pas ncessairement associe une classe particulire (on pourrait dailleurs dfinir la mthode ainsi : une fonction associe une classe donne). Lorsque vous crez une fonction de gestion des vnements, vous devez choisir le nom de la fonction (dans ce cas eventResponse) mais aussi spcifier un paramtre (eventObject dans cet exemple). La spcification dun paramtre de fonction ressemble la dclaration de variable ; vous devez dans ce cas aussi indiquer le type de donnes du paramtre. Il existe une classe ActionScript dfinie pour chaque vnement, et le type de donnes que vous spcifiez pour le paramtre de fonction est toujours la classe associe lvnement particulier auquel vous souhaitez rpondre. Enfin, entre les accolades ouvrantes et fermantes ({ ... }), vous devez crire les instructions que lordinateur doit suivre lorsque lvnement survient. Une fois que vous avez crit la fonction de gestion dvnement, vous devez indiquer lobjet source (lobjet qui cause lvnement, par exemple le bouton) que la fonction appeler lorsque lvnement survient est votre fonction. Pour ce faire, appelez la mthode addEventListener() de cet objet (tous les objets lis des vnements ont une mthode addEventListener()). La mthode addEventListener() rclame deux paramtres :

Tout dabord, le nom de lvnement auquel vous voulez rpondre. Comme nous lavons dj vu, chaque vnement est affili une classe spcifique pour laquelle est dfinie une valeur spciale chaque vnement (en quelque sorte le nom unique de lvnement). Cette valeur sert de premier paramtre. Vient ensuite le nom de votre fonction de rponse lvnement. Sachez quun nom de fonction est crit sans parenthses lors du transfert en tant que paramtre.

Description du processus de gestion des vnementsVous trouverez ci-dessous une description dtaille du processus ayant lieu lorsque vous crez un couteur dvnements. Dans ce cas, il sagit dun exemple illustrant la cration dune fonction dcouteur appele lorsque vous cliquez sur un objet myButton. Le code crit par le programmeur est le suivant :function eventResponse(event:MouseEvent):void { // Actions performed in response to the event go here. } myButton.addEventListener(MouseEvent.CLICK, eventResponse);

Utilisation des objets

37

Voici comment ce code devrait fonctionner lorsquil est excut dans Flash Player :1.

Lors du chargement du fichier SWF, Flash Player remarque quil existe une fonction eventResponse().

2.

Flash Player excute ensuite le code (notamment les lignes de code qui ne sont pas dans une fonction). Dans ce cas, il ny a quune ligne de code : lappel la mthode addEventListener() sur lobjet source (appel myButton) et le transfert de la fonction eventResponse en tant que paramtre.

38

Prise en main dActionScript

a.

En interne, myButton a une liste de fonctions qui coutent chaque vnement. Par consquent, lorsque sa mthode addEventListener() est appele, myButton stocke la fonction eventResponse() dans sa liste dcouteurs dvnements.

3.

A un certain moment, lutilisateur clique sur lobjet myButton et dclenche ainsi son vnement click (identifi comme MouseEvent.CLICK dans le code).

A ce stade, les oprations suivantes ont lieu :

Utilisation des objets

39

a.

Flash Player cre un objet, une instance de la classe associe lvnement en question (MouseEvent dans cet exemple). Pour de nombreux vnements, il sagira dune instance de la classe Event ; pour des vnements de souris, une instance MouseEvent et pour dautres vnements, une instance de la classe associe cet vnement. Cet objet cr est appel lobjet vnement. Il contient des informations spcifiques sur lvnement qui a eu lieu : le type dvnement, lendroit o il sest produit et dautres informations propres lvnement, le cas chant.

b.

Flash Player consulte ensuite la liste des couteurs dvnements stocks par myButton. Il parcourt ces fonctions lune aprs lautre en les appelant et en transmettant lobjet vnement la fonction en tant que paramtre. Etant donn que la fonction eventResponse() est lun des couteurs de myButton, Flash Player appelle la fonction eventResponse() dans le cadre de ce processus.

40

Prise en main dActionScript

c.

Lorsque la fonction eventResponse() est appele, le code quelle contient est excut et vos actions spcifies sont effectues.

Exemples de gestion dvnementsVoici quelques exemples plus concrets dvnements qui vous donneront une ide des lments les plus courants et des variations que vous pourrez utiliser lors de lcriture de votre propre code de gestion des vnements :

Clic sur un bouton pour lancer la lecture du clip actif. Dans lexemple suivant, playButton est le nom doccurrence du bouton et this est un nom spcial qui signifie lobjet actif :this.stop(); function playMovie(event:MouseEvent):void { this.play(); } playButton.addEventListener(MouseEvent.CLICK, playMovie);

Dtection de la saisie dans un champ texte. Dans cet exemple, entryText est un champ de saisie de texte et outputText est un champ texte dynamique :function updateOutput(event:TextEvent):void { var pressedKey:String = event.text; outputText.text = "You typed: " + pressedKey; } entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);

Utilisation des objets

41

Clic sur un bouton pour atteindre une URL. Dans ce cas, linkButton est le nom doccurrence du bouton :function gotoAdobeSite(event:MouseEvent):void { var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(adobeURL); } linkButton.addEventListener(MouseEvent.CLICK, gotoAdobeSite);

Cration dinstances dobjetsBien entendu, pour utiliser un objet dans ActionScript, cet objet doit exister. La cration dun objet repose en partie sur la dclaration dune variable. Nanmoins la variable cre uniquement un emplacement vide dans la mmoire de lordinateur. Vous devez lui attribuer une valeur relle (cest--dire crer un objet et le stocker dans une variable) avant de pouvoir lutiliser ou le manipuler. Le processus de cration dun objet est appel instanciation de lobjet, soit la cration dune instance dune classe particulire. La cration dune instance dobjet peut passer par une mthode simple, qui nimplique pas ActionScript. Dans Flash, lorsque vous placez un symbole de clip, un symbole de bouton ou un champ texte sur la scne, puis que vous lui attribuez un nom doccurrence dans linspecteur Proprits, lapplication dclare une variable dote de ce nom doccurrence, cre une instance dobjet et stocke cet objet dans la variable. Il en va de mme dans Adobe Flex Builder : si vous crez un composant dans Macromedia MXML partir dAdobe (soit par codage dune balise MXML, soit en plaant le composant dans lditeur en mode Cration) et lui attribuez un identifiant (dans la balise MXML ou dans la vue des proprits Flex), cet identifiant devient le nom dune variable ActionScript et une instance du composant est cre et stocke dans la variable. Toutefois, vous ne pourrez pas toujours crer un objet visuellement. Plusieurs mthodes permettent donc de crer des instances dobjet laide dActionScript uniquement. A partir de plusieurs types de donnes ActionScript, vous pouvez tout dabord crer une instance en utilisant une expression littrale, une valeur crite directement dans le code ActionScript. Voici quelques exemples :

Valeur numrique littrale (entrez le nombre directement) :var someNumber:Number = 17.239; var someNegativeIntege