Memento AS3 - David TARDIVEAU. Memento publié en octobre 2008 Première édition Version non relue Cette publication ne peut être vendue.

Documents pareils
La gestion du son en AS3 est logique si on se réfère au fonctionnement d'une table de mixage audio!

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Manuel d utilisation NETexcom

Publication Assistée par Ordinateur

Modules Multimédia PAO (Adobe)

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

Chapitre 1. Prise en main

Chapitre 4 : Guide de Mouvement et Masque

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Les calques supplémentaires. avec Magix Designer 10 et autres versions

DOSSIER D'ACTIVITES SUR TUXPAINT Dessiner avec Tuxpaint. Objectifs :

Utilisation de XnView

Créer des documents interactifs

Table des matières. F. Saint-Germain / S. Carasco Document réalisé avec OpenOffice.org Page 1/13

Traitement numérique de l'image. Raphaël Isdant

Choisir entre le détourage plume et le détourage par les couches.

Présentation du tableau blanc interactif Interwrite

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

DETERMINER LA LARGEUR DE PAGE D'UN SITE et LES RESOLUTIONS d'ecran

Spécificités Techniques créations publicitaires

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Guide pour la réalisation d'un document avec Open Office Writer 2.2

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

Prise en main du logiciel. Smart BOARD Notebook 10

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

VOS PREMIERS PAS AVEC TRACENPOCHE

Guide de l'utilisateur de l'utilitaire d'installation de caméra Avigilon

PRISE EN MAIN D ILLUSTRATOR

Faire de la déformation interactive avec GIMP

Capture Pro Software. Démarrage. A-61640_fr

Création de maquette web

Un exemple avec WORKSPACE d'interwrite

Normes techniques 2011

Rendre un plan de cours interactif avec Médiator

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

SUPPORT DE COURS FLASH CS4

claroline classroom online

TBI-DIRECT. Bridgit. Pour le partage de votre bureau. Écrit par : TBI Direct.

LPP SAINT JOSEPH BELFORT MODE OPERATOIRE ACTIVINSPIRE. Bonne utilisation à toutes et tous! UTILISATION DES TBI LE LOGICIEL ACTIVINSPIRE

1. Cliquez sur dans le coin supérieur gauche de l'écran 2. Sélectionnez la Langue de l'interface désirée 3. Cliquez sur

Créer un modèle Impress

«Cimetières de France en ligne»

Ressources pour débutant du logiciel SMART Notebook

Ressources pour débutant du logiciel SMART Notebook

Créer et gérer des catégories sur votre site Magento

Prise en main du logiciel Smart BOARD

Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte»

Chapitre 3 : outil «Documents»

Optimiser pour les appareils mobiles

Utilisation du logiciel GALAAD

31. OOo Draw Réglages propres à Draw

Administration du site (Back Office)

MANUEL TBI - STARBOARD

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

WHS ProRealTime. édition

Formations au tournage et au montage vidéo. Monter un film avec. Imovie 11

Freeway 7. Nouvelles fonctionnalités

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Prendre en main le logiciel ActivInspire 1.4

Guide App Studio 9.2

MODULES 3D TAG CLOUD. Par GENIUS AOM

ESPACE MULTIMEDIA DU CANTON DE ROCHESERVIERE

Pack Fifty+ Normes Techniques 2013

Prise en main Tableau Blanc Interactif PROMETHEAN V3

Des outils numériques simples et conviviaux!

Dans la série. présentés par le site FRAMASOFT

Animation Shop PREAMBULE... 2 CONTRAINTE... 2 CREER UNE ANIMATION... 2 AJOUTER DES IMAGES... 3 ENREGISTRER UNE ANIMATION... 3

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Le meilleur de l'open source dans votre cyber cafe

MEDIAplus elearning. version 6.6

MANUEL TBI - INTERWRITE

Impress / Présentation

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

Comment formater votre ebook avec Open Office

Trier les ventes (sales order) avec Vtiger CRM

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

LES NOUVEAUTÉS DE ARCON 15 PRO

Le générateur d'activités

Leçon N 5 PICASA Généralités

L espace de travail de Photoshop

Bien travailler sur plusieurs écrans

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

inviu routes Installation et création d'un ENAiKOON ID

Création WEB avec DreamweaverMX

COMMENCER AVEC VUE. Chapitre 1

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Mise en scène d un modèle dans l espace 3D

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Créer un tableau avec LibreOffice / Calc

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz mqwertyuiopasdfghjklzxcvbnmqwert

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Création et utilisation de formulaire pdf

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

Cours Excel : les bases (bases, texte)

Transcription:

Memento AS3 - David TARDIVEAU Memento publié en octobre 2008 Première édition Version non relue Cette publication ne peut être vendue. 2

Table des matières 3 Memento AS3 - David TARDIVEAU Préambule...6 Nature de cette publication... 6 Différence entre un objet d'affichage et une occurrence... 6 Les bases de l'actionscript 3...7 1. Hiérarchie d'une animation...7 A Schéma de la liste d'affichage (display list)... 7 B Schéma des différents types d'objets d'affichage (display objects)... 8 C Schéma de lecture d'une animation Flash au sein du lecteur Player... 9 2. Les écouteurs...10 A Structure d'un gestionnaire d'événement...10 B Les événements MouseEvent.DOUBLE_CLICK et MouseEvent.MOUSE_WHEEL...11 3. Les propriétés d'un objet d'affichage...11 4. Traitements graphiques d'un objet d'affichage...13 A La propriété blendmode...13 B La propriété buttonmode...14 C La propriété mouseenabled...14 D Les filtres...14 E Les masques...15 Manipuler une occurrence...17 5. Rendre une occurrence mobile...17 A Automatiquement (curseur personnalisé)...17 B Manuellement (glisser déplacer un objet d'affichage)...17 C Définir une zone de contrainte...17 6. Changer le niveau (la profondeur, le plan) d'un objet d'affichage...18 7. Interpolation dynamique d'un objet d'affichage...19 A Ajouter un effet de type rebond, élastique ou retour de force...19 B Retarder le lancement de l'interpolation...19 C Exécuter du code lorsque l'interpolation est terminée...19 D Exécuter du code au lancement de l'interpolation...20 E Exécuter du code durant l'exécution de l'interpolation...20 Construction dynamique...21 8. Placer un symbole dynamiquement sur la scène...21 9. Utilisation de la classe Sprite() pour regrouper des objets d'affichage...22 10. Supprimer un objet d'affichage...22 11. Créer une forme géométrique élémentaire...23 A Créer un rond...23 B Créer un carré ou un rectangle...23 12. Créer un tracé à base de segments...24 A Tracer une droite...24 B Tracer une courbe...25 Traitement des médias...26 13. Le texte...26 A Créer un texte dynamiquement sur la scène...26 B Surveiller la saisie de l'utilisateur...26 C Exécuter une ligne d'instruction lorsqu'un texte de saisie reçoit ou perd le focus...26 D Faire défiler un texte...27 E Rendre les lignes d'un texte dynamique cliquable...27 F Formater un texte sur la scène...28 G Assigner une police de caractères à un texte dynamique...28 14. L'image...29

Memento AS3 - David TARDIVEAU A Charger une image sur la scène...29 B Charger une image et la rendre cliquable...29 C Charger plusieurs images sur la scène...29 D Vérifier la fin du chargement d'une image...30 E Réaliser une jauge de chargement d'une image...30 15. La vidéo...30 A Définir la source d'une vidéo...30 B Affecter un contrôleur à une vidéo...31 C Contrôler la lecture et la pause d'une vidéo...31 D Réaliser un bouton Lecture/Pause...31 E Placer dynamiquement une vidéo sur la scène...32 F Déplacer la tête de lecture de la vidéo...32 G Gérer les repères dans une vidéo...33 H Détecter la fin d'une vidéo...33 I Réaliser une jauge de lecture...33 J Connaître l'état de lecture d'une vidéo...34 K Afficher le temps écoulé d'une vidéo...34 16. Le Son...35 A Lecture automatique d'un son...35 B Lire et arrêter un son à partir de deux boutons...35 C Réaliser un bouton Lecture/Pause...35 D Détecter la fin d'un son...36 Traitement des données...38 17. Manipuler un fichier XML...38 A Charger un fichier XML et lire la valeur d'un nœud...38 B Charger un fichier XML et lire l'attribut d'un nœud...38 C Rechercher une information dans un arbre XML...39 D Manipuler le résultat d'une requête via la classe XMLList...40 18. Charger des données provenant d'une base de type MySQL...41 A Charger des données...41 B Envoyer des données...41 C Envoyer et charger des données...42 19. Envoyer un mail à partir d'une animation flash...42 A À partir du logiciel de messagerie de l'utilisateur...42 B À partir de l'animation sans quitter la fenêtre du navigateur...42 Notions élémentaires à la construction d'un algorithme...44 20. Les variables...44 A Déclarer une variable...44 B Typer une variable...44 C Initialiser une variable...45 D Portée d'une variable...45 E Le type booléen (Boolean)...46 21. Les tableaux...47 A Déclarer et initialiser un tableau...47 B Lire une entrée de tableau...47 C Ajouter des entrées dans un tableau...48 G Parcourir tout un tableau : Méthode foreach() de la classe Array()...49 H Dupliquer un tableau en le traitant : Méthode map() de la classe Array()...50 I Les tableaux de propriétés ou associatifs...50 J Filtrer les données d'un tableau : Méthode filter() de la classe Array()...50 22. Les structures conditionnelles avec if() et switch()...51 A Structure de type if()...51 B Structure de type if() else...52 C Les tests multiples...52 4

Memento AS3 - David TARDIVEAU D La structure switch() case...52 23. Les itérations (boucles)...54 A La boucle for()...54 B La boucle for each()...54 C Les boucles imbriquées...55 D La boucle while()...56 24. Les fonctions...56 A Déclaration d'une fonction...57 B Appel d'une fonction...57 C Fonctions avec variables locales...57 Fonctionnalités complémentaires...59 25. Afficher une animation en plein écran...59 26. Exécuter une fonction javascript à partir d'une animation Flash...59 27. Naviguer vers une page HTML depuis une animation Flash...60 28. Temporiser l'exécution d'une ligne d'instruction avec la classe Timer()...60 A Lancer l'exécution...60 B Détecter la fin de la dernière répétition...60 29. Stocker des informations sur la machine de l'utilisateur...61 30. Imprimer une animation Flash...61 A Imprimer la scène...62 B Imprimer une partie de la scène...62 31. Obtenir des informations relatives à la machine de l'utilisateur...62 5

Memento AS3 - David TARDIVEAU PREAMBULE Nature de cette publication Attention, cette publication n'est pas un ouvrage pour découvrir ou apprendre l'actionscript 3, mais un support, une aide, un mémento, pour vous accompagner dans vos premières productions d'animations Flash interactives. En pré requis à la lecture de ce mémento, vous devez donc avoir reçu un enseignement ou être passé par une phase d'apprentissage en autodidacte du langage. Il ne peut en aucun cas être utilisé comme un ouvrage de référence en ActionScript 3. Différence entre un objet d'affichage et une occurrence Depuis Flash CS3 (Flash 9), la gestion des différentes occurrences sur la scène se fait différemment car la notion de "liste d'affichage" a fait son apparition. Cette dernière est comparable à un registre, c'est à dire à un listing, qui fait un état des lieux permanent des "occurrences présentes" sur la scène. En anglais, la notion d'"affichage" est souvent résumée au terme "display", c'est pourquoi, dans la mesure où nous manipulons des occurrences comme nous le ferions avec des objets (un verre, un stylo, une bouteille, un vêtement, etc.), on parle "d'objet d'affichage", c'est à dire un "display object". Cette explication tend principalement à expliquer aux développeurs AS1/AS2, la différence entre une occurrence et un objet d'affichage. En conclusion, il s'agit de la même notion, c'est à dire la "représentation graphique" d'un symbole (de la bibliothèque ou créé dynamiquement) sur la scène. 6

LES BASES DE L'ACTIONSCRIPT 3 Memento AS3 - David TARDIVEAU 1. HIERARCHIE D'UNE ANIMATION A Schéma de la liste d'affichage (display list) Lorsqu'un symbole, un texte ou une forme (etc.) sont placés/crées sur la scène, ils sont qualifiés d'objets d'affichage (anciennement des "occurrences"). Certains d'entre eux (voir le schéma de la Figure 1) peuvent contenir d'autres objets d'affichage, on les appelle alors des conteneurs d'objets d'affichage. Figure 1 : La liste d'affichage d'une animation. Lorsque vous placez un symbole de type Clip sur la scène, sa représentation graphique (sur la scène) est alors qualifiée d'objet d'affichage. Si vous éditez ce symbole pour lui placer un autre symbole à l'intérieur, dans ce cas, vous n'avez plus un objet d'affichage sur la scène, mais un conteneur d'objet d'affichage. Si vous placez sur la scène, un symbole qui en contient déjà d'autres (des objets d'affichage), vous obtenez directement un conteneur d'objet d'affichage. 7

Memento AS3 - David TARDIVEAU B Schéma des différents types d'objets d'affichage (display objects) Les objets d'affichage qui se trouvent par définition sur la scène peuvent être de différents types, en voici une liste exhaustive : Figure 2 : Les différents types d'objets d'affichage D'après ce schéma, on comprend pourquoi une forme ou un texte statique ne pourront jamais être des conteneurs d'objets d'affichage à la différence d'un objet d'affichage de type Sprite. Remarque : AVM1 Movie signifie qu'il s'agit d'une animation Flash (SWF) aux formats Flash 8 ou antérieurs. 8

Memento AS3 - David TARDIVEAU C Schéma de lecture d'une animation Flash au sein du lecteur Player Lorsque le lecteur Flash lit une animation au format SWF, voici ce qu'il se passe à travers cette analogie : Figure 3 : Logique de lecture d'une animation Flash via le lecteur (player) Flash Le lecteur Flash que vous téléchargez (le plug in Flash de votre navigateur ou le lecteur autonome) est comparable à un théâtre qui contient une scène (l'objet Stage) sur laquelle se joue une pièce de théâtre (l'animation au format SWF). Pour preuve et traduction de ce schéma en code, voici ce que renvoie l'animation lorsque les lignes d'instruction ci dessous sont exécutées : trace(this) trace(parent) trace(root) Résultats dans la fenêtre Sortie (de l'ide) de Flash. [object MainTimeline] [object Stage] [object MainTimeline] 9

Memento AS3 - David TARDIVEAU 2. LES ECOUTEURS A Structure d'un gestionnaire d'événement 1. Code exécuté au clic sur un objet d'affichage (dont le nom est monbouton). monbouton.addeventlistener(mouseevent.mouse_down,deplacer); function deplacer(evt:mouseevent) { personnage.x=150; personnage.y=230; Remarque : Le nom de "l'objet" evt est choisi librement, mais il ne doit pas contenir de caractères spéciaux, accentués et ne commence pas par une majuscule. Si le terme "objet" de cette explication vous gêne, remplacez le maladroitement par le terme "variable". N'utilisez pas le nom event si vous démarrez en programmation afin qu'il n'y ait aucune ambiguïté avec le mot Event qui a un tout autre sens. Tableau des différentes constantes de la classe MouseEvent Nom de la constante MOUSE_DOWN MOUSE_UP MOUSE_MOVE MOUSE_OVER MOUSE_OUT Déclenchement de l'évènement Au clic sur l'objet d'affichage Lorsque le bouton de la souris est relâché après un clic Lorsque le curseur de la souris bouge sur (ou avec) l'objet d'affichage Lorsque le curseur de la souris survol l'objet d'affichage Lorsque le curseur ressort d'un objet d'affichage Il existe également les constantes ci dessous qui fonctionnent selon la même équivalence Constante CLICK ROLL_OVER ROLL_OUT équivalente à cette constante MOUSE_DOWN MOUSE_OVER MOUSE_OUT 2. Code exécuté en continu etoile.addeventlistener(event.enter_frame,tourner); function tourner(evt:event) { etoile.rotation+=3; 10

Memento AS3 - David TARDIVEAU Remarque : Le nombre d'images par seconde de l'animation influe directement sur la vitesse d'exécution des lignes d'instructions. Pour arrêter un mouvement en continu, exécutez la ligne d'instruction ci dessous : etoile.removeeventlistener(event.enter_frame,tourner); B Les événements MouseEvent.DOUBLE_CLICK et MouseEvent.MOUSE_WHEEL Pour activer la reconnaissance du double clic sur un objet d'affichage, réglez la propriété doubleclickenabled à true. elle.doubleclickenabled = true elle.addeventlistener(mouseevent.double_click,tourner); function tourner(evt:mouseevent) { elle.rotation+=3; Pour désactiver la reconnaissance de l'utilisation de la molette de votre souris, réglez la propriété mousewheelenabled à false (par défaut, elle est réglée à true). 3. LES PROPRIETES D'UN OBJET D'AFFICHAGE Toutes les propriétés ci dessous peuvent être modifiées (exceptées les 5 dernières) et lues. Propriétés Unité Valeurs maxi/mini Spécificités x pixels Pas de limites Indique la position d'un objet d'affichage par rapport au bord gauche de la scène. y pixels Pas de limites Indique la position d'un objet d'affichage par rapport au haut de la scène. alpha pourcentage Entre 0 et 1 (0.6 pour obtenir 60%) Indique le degré de transparence d'un objet d'affichage. height pixels Pas de limites Indique la hauteur d'un objet d'affichage. width pixels Pas de limites Indique la largeur d'un objet d'affichage. scalex pourcentage Pas de limites Indique l'échelle horizontale d'un objet d'affichage par rapport à sa taille d'origine (au moment où il a été placé sur la scène la première fois). scaley pourcentage Pas de limites Indique l'échelle verticale d'un objet d'affichage par rapport à sa taille d'origine (au moment où il a été placé sur la scène la première fois). 11

Memento AS3 - David TARDIVEAU visible booléen true ou false Affiche ou masque un objet d'affichage. rotation degrés Pas de limites Règle l'angle de rotation d'un objet d'affichage. rotationx degrés Pas de limites (A partir du player Flash 10 uniquement) rotationy degrés Pas de limites (A partir du player Flash 10 uniquement) rotationz degrés Pas de limites (A partir du player Flash 10 uniquement) name chaine de caractères Pas de caractères spéciaux, accentués et ne doit pas commencer par une majuscule. mousex pixels Propriété en lecture seule. mousey pixels Propriété en lecture seule. stage n/a Propriété en lecture seule. parent n/a Propriété en lecture seule. root n/a Propriété en lecture seule. La propriété mousechildren Règle l'angle de rotation d'un objet d'affichage par rapport à un axe horizontal (de gauche à droite, pour un mouvement vertical, de bas en haut). Règle l'angle de rotation d'un objet d'affichage par rapport à un axe vertical (de haut en bas, pour un mouvement horizontal, de gauche à droite). Règle l'angle de rotation d'un objet d'affichage comme le fait la propriété rotation. Permet de définir ou lire le nom d'occurrence d'un objet d'affichage. La valeur renvoyée est relative au côté gauche de la scène ou relative au point d'alignement de l'objet d'affichage. La valeur renvoyée est relative au haut de la scène ou relative au point d'alignement de l'objet d'affichage. Tous les objets d'affichage possèdent la propriété commune stage. Fait référence à l'objet d'affichage qui contient celui auquel vous associez la propriété parent. Fait référence à l'objet d'affichage racine. Elle sera indispensable dans le cas où vous aurez besoin de désactiver ou d'activer le clic sur les objets d'affichage contenus dans un autre. (Dans l'exemple ci dessous, un objet d'affichage intitulé tableaubord en contient deux autres intitulés bt1 et bt2). tableaubord.addeventlistener(mouseevent.mouse_down,clictableau) tableaubord.mousechildren = false bt1.addeventlistener(mouseevent.mouse_down,clicboutons) bt2.addeventlistener(mouseevent.mouse_down,clicboutons) function clictableau (evt:mouseevent) { trace("tableau de bord"); 12

Memento AS3 - David TARDIVEAU function clicboutons (evt:mouseevent) { trace("bouton"); Changez le paramètre false par true pour évaluer la différence entre ces deux cas de figure. Remarque : Le script ci dessus sous entend que les objets d'affichage intitulés bt1 et bt2 ont été ajoutés dans l'objet d'affichage intitulé tableaubord à l'aide de la méthode addchild(). Si vous construisez vous même un symbole contenant deux autres objets d'affichage (occurrences), utilisez la ligne d'instruction ci dessous : tableaubord.bt1.addeventlistener(mouseevent.mouse_down,clicboutons) 4. TRAITEMENTS GRAPHIQUES D'UN OBJET D'AFFICHAGE A La propriété blendmode Pour appliquer un mode de surimpression à un objet d'affichage par rapport à son arrière plan, utilisez la propriété blendmode de la façon suivante : nomdelobjetdaffichage.blendmode=blendmode.difference; La figure ci dessous vous présente le résultat de l'application des différents modes entre un carré vert dont le nom d'objet d'affichage est nomdelobjetdaffichage (au premier plan) et un carré rouge (en arrière plan). Figure 4: Les différents modes de surimpression (exemple 1) Voici les mêmes calculs avec des carrés contenant des dégradés (Bleu Rouge Vert Noir Blanc). 13

Memento AS3 - David TARDIVEAU B La propriété buttonmode Figure 5: Les différents modes de surimpression (exemple 2) Pour afficher le curseur de type doigt sur un objet d'affichage de type Sprite (ou MovieClip), utilisez la propriété buttonmode de la façon suivante : boutonecransuivant.buttonmode=true; C La propriété mouseenabled Pour désactiver le clic sur un objet d'affichage, utilisez cette propriété de la façon suivante : boutonecransuivant.mouseenabled = false; Dans le cas où vous souhaiteriez désactiver le clic de tous les objets d'affichages contenus dans un conteneur d'objets d'affichage, utilisez la propriété mousechildren. (voir ci dessus, "Les propriétés d'un objet d'affichage") D Les filtres Pour appliquer une ombre portée (ou tout autre filtre) à un objet d'affichage, utilisez le script ci dessous : import flash.filters.dropshadowfilter; var ombre:dropshadowfilter = new DropShadowFilter(); var filtres:array = new Array(); ombre.blurx = 7; ombre.blury = 7; ombre.distance = 3; ombre.angle = 45; ombre.alpha=0.3; ombre.strength = 2; ombre.quality = BitmapFilterQuality.HIGH; ombre.color = 0xAA3333 filtres.push(ombre); etiquette.filters=filtres; 14

Memento AS3 - David TARDIVEAU Pour appliquer d'autres filtres, remplacez la fin de la première ligne du script ci dessus (DropShadowFilter) par l'un des "mots" suivants : BevelFilter, BlurFilter, DropShadowFilter, GlowFilter, GradientBevelFilter, GradientGlowFilter. N'oubliez pas d'instancier la bonne classe (le deuxième et le troisième mot "DropShadowFilter" de l'exemple ci dessus). Liste des propriétés disponibles par type de filtre Bevel Blur DropShadow Glow GradientBevel GradientGlow alpha Oui Oui alphas Oui Oui angle Oui Oui Oui Oui blurx Oui Oui Oui Oui Oui Oui blury Oui Oui Oui Oui Oui Oui distance Oui Oui Oui Oui quality Oui Oui Oui Oui Oui Oui color Oui Oui colors Oui Oui strength Oui Oui Oui Oui Oui hideobject Oui inner Oui Oui knockout Oui Oui Oui Oui Oui type Oui Oui Oui shadowalpha Oui shadowcolor Oui highlightalpha Oui highlightcolor Oui ratios Oui Oui Remarques : Les valeurs en pourcentage sont exprimées par une valeur comprise entre 0 et 1 (Ex. : 0.3 pour 30 %). Les valeurs pour les couleurs sont exprimées sous la forme 0x000000. Les valeurs de blur (blurx et blury) possèdent généralement des valeurs comprises entre 1 et 10 (sauf dans le cas d'effets particuliers telles qu'une ombre fortement décalée). Faites un trace de la propriété que vous souhaitez modifier si vous ne connaissez pas la plage des valeurs applicables (Ex. : trace(ombre.alpha)). E Les masques Pour ne voir qu'une partie d'image, utilisez la propriété mask comme dans l'exemple cidessous : 15

Memento AS3 - David TARDIVEAU visuel.mask=lemasque; Dans l'exemple ci dessous, le nom de l'objet d'affichage contenant la photo est visuel, le nom de l'objet d'affichage contenant la forme géométrique qui est au premier plan (les deux rectangles gris qui se chevauchent) est lemasque. Figure 6: Technique du masque appliqué à un objet d'affichage 16

Memento AS3 - David TARDIVEAU MANIPULER UNE OCCURRENCE 5. RENDRE UNE OCCURRENCE MOBILE A Automatiquement (curseur personnalisé) 1. Nommez un objet d'affichage (ex. : curseur) curseur.startdrag(true); Remarque : Pour masquer le curseur (de la souris) d'origine, ajoutez la ligne ci dessous : Mouse.hide(); B Manuellement (glisser déplacer un objet d'affichage) 1. Nommez un objet d'affichage (ex. : carte) carte.addeventlistener(mouseevent.mouse_down,deplacer); carte.addeventlistener(mouseevent.mouse_up,relacher); function deplacer(evt:mouseevent) { evt.currenttarget.startdrag(false); stage.addeventlistener(mouseevent.mouse_up,relacher); function relacher(evt:mouseevent) { stage.removeeventlistener(mouseevent.mouse_up,relacher); stopdrag(); Remarque : Les deux lignes d'instructions ci dessus qui commencent par le mot stage permettent de gérer les cas ou l'objet d'affichage reste collé au curseur de la souris (lorsque l'utilisateur relâche le bouton de la souris alors que le curseur n'est plus sur l'objet d'affichage). C Définir une zone de contrainte Instanciez le classe Rectangle() et ajoutez un deuxième paramètre à la méthode startdrag(). var zonedecontrainte:rectangle = new Rectangle (30,40,300,50); carte.addeventlistener(mouseevent.mouse_down,deplacer); carte.addeventlistener(mouseevent.mouse_up,relacher); function deplacer(evt:mouseevent) { evt.currenttarget.startdrag(false,zonedecontrainte); stage.addeventlistener(mouseevent.mouse_up,relacher); function relacher(evt:mouseevent) { stage.removeeventlistener(mouseevent.mouse_up,relacher); 17

Memento AS3 - David TARDIVEAU stopdrag(); Remarque : La première ligne du script ci dessus et l'adjonction du mot zonedecontrainte à la méthode startdrag() suffisent à contraindre le déplacement. Les valeurs 30 et 40 correspondent au coin supérieur gauche de la zone mesurant 300 pixels de largeur et 50 pixels de hauteur dans laquelle l'occurrence peut être déplacée. Précisons que c'est le point d'alignement d'un symbole qui ne peut sortir de la zone définie. 6. CHANGER LE NIVEAU (LA PROFONDEUR, LE PLAN) D'UN OBJET D'AFFICHAGE Dans certains cas, vous aurez besoin de placer des objets d'affichage au premier plan (ou en arrière plan, ou sur des plans indexés (précis)), vous aurez alors besoin d'utiliser la méthode setchildindex(). setchildindex(carte1,this.numchildren-1) Le premier paramètre doit être un nom d'objet d'affichage (carte1 dans notre exemple). Le deuxième paramètre doit être un nombre dont la valeur est inférieure au nombre d'objets d'affichage contenus dans le conteneur ciblé (il n'y en a pas dans le script ci dessus). Dans notre exemple, nous cherchons à placer un objet d'affichage au premier plan, c'est pourquoi, nous utilisons l'expression numchildren 1. La propriété numchildren permet en effet de connaître le nombre d'objets d'affichage contenus dans un conteneur d'objet(s) d'affichage. Dans l'exemple ci dessus, le mot clé this fait référence à l'animation. Rappelons également que le premier objet d'affichage placé sur la scène porte l'index 0 et non 1. Remarque : Si vous avez placé un objet d'affichage dans un autre à l'aide de la méthode addchild(), vous devez alors préfixer la méthode setchildindex() par le nom du conteneur d'objet d'affichage parent comme nous le démontre l'exemple ci dessous. setchildindex(carte1,this.numchildren-1) Dans certains cas, vous aurez besoin de convertir une expression en une instance de type DisplayObject() afin que la méthode setchildindex() accepte le premier paramètre (la référence à l'objet d'affichage lui même). Vous aurez donc besoin de procéder à une conversion telle que celle ci : setchildindex(displayobject(carte1),this.numchildren-1); 18

Memento AS3 - David TARDIVEAU 7. INTERPOLATION DYNAMIQUE D'UN OBJET D'AFFICHAGE Rappel : Evitez d'utiliser la classe Tween() native de l'as3, faites appel aux classes TweenMax() ou Tweener() (Caurina). Dans ce mémento, nous utiliserons le package gs qui contient les classes principales TweenLite(), TweenFilterLite() et TweenMax(). 1. Télécharger le package gs à l'adresse ci dessous : http://www.greensock.com/actionscript/tweenmax/tweenmaxas3.zip 2. Placez le dossier gs dans le même dossier que celui qui contient votre fichier.fla. 3. Placez un objet d'affichage sur la scène et nommez le balle. 4. Saisissez le script ci dessous dans la fenêtre Actions. import gs.tweenmax; TweenMax.to(balle, 2, {x:250,y:150,rotation:45); Vous pouvez utiliser les propriétés énoncées dans les premières pages de ce mémento en lieu et place des propriétés x, y et rotation de l'exemple ci dessus. La durée de l'interpolation est toujours exprimée en secondes et non en millisecondes (2 secondes dans notre exemple). A Ajouter un effet de type rebond, élastique ou retour de force 1. Importez l'ensemble des classes du package easing (2 eme ligne du script ci dessous). 2. Dans la méthode to(), Ajoutez la propriété ease en précisant l'une des classes suivantes : Linear, Elastic, Back, Bounce 3. Spécifiez l'emplacement de l'effet : easein (au début), easeout (à la fin) ou easeinout (au début et à la fin de l'interpolation). import gs.tweenmax; import gs.easing.*; TweenMax.to(balle, 2, {scalex:5,scaley:5, ease:bounce.easeout); B Retarder le lancement de l'interpolation 1. Ajoutez la propriété delay en spécifiant une valeur exprimée en secondes. import gs.tweenmax; TweenMax.to(balle, 2, {x:350,delay:2); C Exécuter du code lorsque l'interpolation est terminée 1. Ajoutez la propriété oncomplete suivie du nom de la fonction appelée à la fin de l'interpolation. 19

Memento AS3 - David TARDIVEAU import gs.tweenmax; TweenMax.to(balle, 2, {x:350,oncomplete:fininterpolation); function fininterpolation() { balle.scalex=0.3; balle.scaley=0.3; D Exécuter du code au lancement de l'interpolation 1. Ajoutez la propriété onstart suivie du nom de la fonction appelée à la fin de l'interpolation. import gs.tweenmax; TweenMax.to(balle, 2, {x:350,delay:3,onstart:fininterpolation); function fininterpolation() { balle.scalex=0.3; balle.scaley=0.3; Remarque : Une telle propriété (ci dessus) est principalement utile lorsque vous faites appel à la propriété delay. E Exécuter du code durant l'exécution de l'interpolation 1. Ajoutez la propriété onupdate suivie du nom de la fonction appelée à la fin de l'interpolation. import gs.tweenmax; TweenMax.to(balle, 2, {x:350,onupdate:fininterpolation); function fininterpolation() { balle.rotation++; 20

Memento AS3 - David TARDIVEAU CONSTRUCTION DYNAMIQUE 8. PLACER UN SYMBOLE DYNAMIQUEMENT SUR LA SCENE 1. Créer un symbole en cliquant sur le bouton Avancé (figure 7). 2. Cliquez sur la case à cocher "Exporter pour ActionScript" (figure 8). 3. Donnez un nom de Classe (nom qui commence par une majuscule). 4. Utilisez le script ci dessous var macarte:carte = new Carte(); addchild(macarte); macarte.x=100; macarte.y=120; Après l'exécution du script ci dessus, vous obtenez un objet d'affichage. Figure 7 : Cliquez sur le bouton Avancé afin d'afficher la fenêtre dans son intégralité. Figure 8 : Cliquez sur la case à cocher "Exporter pour ActionScript" afin de pouvoir donner un nom de classe. Si vous avez besoin d'effectuer ce réglage pour un symbole déjà existant, effectuez un clic droit sur le symbole de votre choix dans la Bibliothèque puis cliquez sur la commande "Liaison" (si vous travaillez sur Flash CS3) ou "Propriétés" (si vous travaillez sur Flash CS4). Vous accéderez alors à la fenêtre de la figure 8.0. 21

Memento AS3 - David TARDIVEAU Remarque : Gardez toujours à l'esprit que les symboles avec liaison se chargent sur la première image, avant même qu'une jauge de chargement d'animation ne puisse s'afficher. Cela explique pourquoi vos jauges de préchargement d'animation ne commencent pas toujours à partir 0. 9. UTILISATION DE LA CLASSE SPRITE() POUR REGROUPER DES OBJETS D'AFFICHAGE Lorsque vous placerez dynamiquement des objets d'affichage sur la scène, vous aurez tout intérêt à les regrouper par fonctionnalités au sein de conteneurs d'objets d'affichage de type Sprite. Pour ce faire, créez préalablement sur la scène, des instances de la classe Sprite(). var tapis:sprite = new Sprite(); addchild(tapis); var carte1:carte = new Carte(); var carte2:carte = new Carte(); var carte3:carte = new Carte(); tapis.addchild(carte1); tapis.addchild(carte2); tapis.addchild(carte3); carte1.x=100; carte2.x=200; carte3.x=300; carte1.y=carte2.y=carte3.y=120; Si vous manipulez à présent l'objet d'affichage tapis, vous manipulez globalement alors les objets d'affichage carte1, carte2 et carte3. Pour supprimer toutes les cartes, il vous suffit de supprimer le conteneur d'objets d'affichage tapis (voir le point 10 ci dessous). 10. SUPPRIMER UN OBJET D'AFFICHAGE Faites simplement appel à la méthode removechild() en précisant comme paramètre (à l'intérieur des parenthèses), le nom de l'objet d'affichage. removechild(tapis); Si vous avez placé un objet d'affichage dans un conteneur d'objet d'affichage, vous devez alors préciser le nom du parent devant la méthode removechild(). tapis.removechild(carte1); Remarque : Si vous supprimez un conteneur d'objet d'affichage, les éventuels enfants qu'il contient disparaissent également. 22

Memento AS3 - David TARDIVEAU 11. CREER UNE FORME GEOMETRIQUE ELEMENTAIRE Créez une instance de type Sprite et définissez lui des attributs graphiques attendus en fonction de la forme que vous souhaitez obtenir. A Créer un rond var cible:sprite = new Sprite(); cible.graphics.linestyle(5,0xff0000,1); cible.graphics.drawcircle(150,100,30); addchild(cible); La méthode linestyle() attend les paramètres suivants : L'épaisseur, la couleur et l'opacité du trait. La méthode drawcircle() attend les paramètres suivants : Les positions horizontales et verticales du centre du rond, ainsi que le rayon de la forme. Pour remplir une forme, vous devez utiliser la méthode beginfill() comme le démontre l'exemple ci dessous : var cible:sprite = new Sprite(); cible.graphics.linestyle(5,0xff0000,1); cible.graphics.beginfill(0xff0000,0.5); cible.graphics.drawcircle(150,100,30); cible.graphics.endfill(); addchild(cible); Remarque : La valeur 0.5 (soit 50%) de la méthode beginfill() correspond à l'opacité du remplissage. B Créer un carré ou un rectangle Pour créer un carré ou un rectangle, remplacez la méthode drawcircle() de l'exemple cidessus, par drawrect(). Vous préciserez alors les 4 paramètres suivants : cible.graphics.drawrect(50,100,100,150); Les 4 valeurs de la méthode drawrect() correspondent respectivement aux coordonnées x et y du rectangle, accompagnées de la largeur et la hauteur de la forme. Remarque : Si vous avez besoin de faire tourner ou mettre à l'échelle une forme de type carré ou rectangle à partir de son centre, vous devrez alors utiliser des valeurs négatives pour placer le quadrilatère. Pour les connaître, vous devez utiliser la moitié de la largeur et la moitié de la hauteur de forme forme. Terminez votre script en replaçant votre forme à l'aide des propriété x et y. 23

Memento AS3 - David TARDIVEAU var cible:sprite = new Sprite(); cible.graphics.linestyle(5,0xff0000,1); cible.graphics.drawrect(-50,-75,100,150); cible.x = 230 cible.y = 180 addchild(cible); 12. CREER UN TRACE A BASE DE SEGMENTS Comme nous l'avons fait pour la création de formes fermées telles que le carré ou le rond, commencez par créer une instance de type Sprite. Ensuite, vous devez utilisez les méthodes moveto() pour indiquer le point de départ de votre tracé et lineto() pour tracer une droite jusqu'à un point précis ou bien même curveto() pour tracer une courbe. A Tracer une droite var cible:sprite = new Sprite(); cible.graphics.linestyle(5,0xff0000,1); cible.graphics.moveto(50,50); cible.graphics.lineto(150,50); addchild(cible); Vous pouvez combiner plusieurs tracés afin de générer une forme. var cible:sprite = new Sprite(); cible.graphics.linestyle(5,0xff0000,1); cible.graphics.moveto(50,50); cible.graphics.lineto(150,75); cible.graphics.lineto(150,150); cible.graphics.lineto(100,150); cible.graphics.lineto(100,80); cible.graphics.lineto(50,65); cible.graphics.lineto(50,50); addchild(cible); Figure 9 : La forme ci dessous est le résultat de l'exécution des lignes d'instruction ci dessus. 24

Memento AS3 - David TARDIVEAU B Tracer une courbe Les paramètres de la méthode curveto() indiquent les coordonnées du point directeur et celles du point d'arrivée de la courbe. var cible:sprite = new Sprite(); cible.graphics.linestyle(5,0xff0000,1); cible.graphics.moveto(50,100); cible.graphics.lineto(150,100); cible.graphics.curveto(175,150,150,200); cible.graphics.lineto(50,200); addchild(cible); Figure 10 : La forme ci dessous est le résultat de l'exécution des lignes d'instruction ci dessus. Remarque : Comme vous pouvez le remarquer, il est tout à fait possible de mélanger courbes et droites. 25

Memento AS3 - David TARDIVEAU TRAITEMENT DES MEDIAS 13. LE TEXTE A Créer dynamiquement un texte sur la scène 1. Faites appel à la classe TextField() et ajoutez votre objet d'affichage sur la scène. var titredufilm:textfield = new TextField() titredufilm.text = "Les enfants du paradis"; addchild(titredufilm) Vous utiliserez ensuite une ou plusieurs des propriétés suivantes pour affiner la nature et le type de votre texte : type (ex. : titredufilm.type=textfieldtype.input) border (ex. : titredufilm.border=true) bordercolor (ex. : titredufilm.bordercolor=0xff0000) background (ex. : titredufilm.background=true) backgroundcolor (ex. : titredufilm.backgroundcolor=0x00ff00) autosize (ex. : titredufilm.autosize=textfieldautosize.left) maxchars (ex. : titredufilm.maxchars=5); Pour régler l'alignement, vous devez utiliser la classe TextFormat(). Remarque : La propriété maxchars sous entend que vous proposez à l'utilisateur de saisir un texte (Cela n'a pas de sens avec un texte dynamique). B Surveiller la saisie de l'utilisateur on); 1. Placez un texte de type Saisie de texte sur la scène et nommez le nomutilisateur. 2. Saisissez le script ci dessous dans la fenêtre Actions nomutilisateur_txt.addeventlistener(textevent.text_input,encoursdemodificati function encoursdemodification(evt:textevent) { if (nomutilisateur_txt.text.indexof("david")>=0) { nomutilisateur_txt.text="gagné"; C Exécuter une ligne d'instruction lorsqu'un texte de saisie reçoit ou perd le focus 1. Placez un texte de type Saisie de texte sur la scène et nommez le nomutilisateur. 26

Memento AS3 - David TARDIVEAU 2. Saisissez le script ci dessous dans la fenêtre Actions nomutilisateur_txt.addeventlistener(focusevent.focus_in,focusactif); nomutilisateur_txt.addeventlistener(focusevent.focus_out,focusperdu); function focusactif(evt:focusevent) { nomutilisateur_txt.bordercolor=0xff0000; nomutilisateur_txt.backgroundcolor=0xffcccc; function focusperdu(evt:focusevent) { nomutilisateur_txt.bordercolor=0x000000; nomutilisateur_txt.backgroundcolor=0xffffff; D Faire défiler un texte Si vous possédez déjà un texte dynamique sur la scène, supprimez les 3 premières lignes du script ci dessous. var repertoire:textfield = new TextField(); repertoire.height=40; addchild(repertoire); repertoire.appendtext("marjorie\n"); repertoire.appendtext("marine\n"); repertoire.appendtext("luna\n"); repertoire.appendtext("mathilde\n"); repertoire.appendtext("melissa\n"); repertoire.appendtext("lucie\n"); repertoire.appendtext("eva"); btligneapres.addeventlistener(mouseevent.mouse_down,abaisser); btligneavant.addeventlistener(mouseevent.mouse_down,lever); function abaisser(evt:mouseevent) { repertoire.scrollv++; function lever(evt:mouseevent) { repertoire.scrollv--; Remarque : L'exemple ci dessus vous propose le défilement d'un texte verticalement. Si vous utilisez la propriété scrollh, vous pouvez obtenir un défilement de texte horizontal avec un décalage lettre par lettre. E Rendre les lignes d'un texte dynamique cliquable 1. Placez un texte dynamique sur la scène à l'aide de l'outil Texte ou créez le dynamiquement. Nommez l'objet d'affichage : repertoire. repertoire.appendtext("marjorie\n"); repertoire.appendtext("marine\n"); repertoire.appendtext("luna\n"); repertoire.appendtext("mathilde\n"); 27

Memento AS3 - David TARDIVEAU repertoire.appendtext("melissa\n"); repertoire.selectable = false repertoire.addeventlistener(mouseevent.mouse_down,numeroligne); function numeroligne(evt:mouseevent) { trace(repertoire.getlineindexatpoint(repertoire.mousex,repertoire.mousey)); F Formater un texte sur la scène Vous devez faire appel à la classe TextFormat() et la méthode settextformat() de la classe TextField(). var titrelivre:textfield = new TextField(); titrelivre.text="les arbres dans le vent"; titrelivre.autosize=textfieldautosize.left; addchild(titrelivre); var styleno1:textformat = new TextFormat(); styleno1.size=16; styleno1.color=0xee442f; titrelivre.settextformat(styleno1); G Assigner une police de caractères à un texte dynamique 1. Commencez par importer une police dans la bibliothèque de votre animation. 2. Définissez lui une liaison en lui donnant un nom de classe var titrelivre:textfield = new TextField(); titrelivre.text = "Les arbres dans le vent"; titrelivre.embedfonts = true; titrelivre.autosize = TextFieldAutoSize.LEFT addchild(titrelivre); titrelivre.x=20; titrelivre.y=20; var styleno1:textformat = new TextFormat(); styleno1.size = 16; styleno1.color = 0xEE442F; styleno1.font="almagro"; titrelivre.settextformat(styleno1); 28

Memento AS3 - David TARDIVEAU 14. L'IMAGE A Charger une image sur la scène 1. Placez une image intitulée image1.png dans le même dossier que votre fichier.fla. var chargeur:loader = new Loader(); var adresseimage:urlrequest = new URLRequest("image1.png"); chargeur.load(adresseimage); addchild(chargeur); B Charger une image et la rendre cliquable 1. Placez une image intitulée image1.png dans le même dossier que votre fichier.fla. var chargeur:loader = new Loader(); var adresseimage:urlrequest = new URLRequest("image1.png"); chargeur.load(adresseimage); addchild(chargeur); chargeur.addeventlistener(mouseevent.mouse_down,reduiretaille); function reduiretaille (evt:mouseevent) { chargeur.scalex = chargeur.scaley = 0.5; chargeur.x=150; chargeur.y=80; C Charger plusieurs images sur la scène 1. Créez un dossier intitulé images que vous placez dans le même dossier que votre fichier.fla. 2. Placez des images intitulées image1.png, image2.png, image3.png, image4.png dans ce dossier intitulé "images". var chargeur:loader; var adresseimage:urlrequest; for (var i:number=0; i<=3; i++) { chargeur = new Loader(); adresseimage = new URLRequest("images/image"+i+".png"); chargeur.load(adresseimage); chargeur.x=(i*150); chargeur.y=120; chargeur.alpha = 0.7; addchild(chargeur); chargeur.addeventlistener(mouseevent.mouse_over,opacite100); function opacite100(evt:mouseevent) { evt.currenttarget.alpha = 1; chargeur.addeventlistener(mouseevent.mouse_out,opacite50); 29

Memento AS3 - David TARDIVEAU function opacite50(evt:mouseevent) { evt.currenttarget.alpha = 0.5; D Vérifier la fin du chargement d'une image 1. Placez une image intitulée image1.png dans le même dossier que votre fichier.fla. var chargeur:loader; var adresseimage:urlrequest = new URLRequest("image1.jpg"); chargeur = new Loader(); chargeur.load(adresseimage); chargeur.x=150; addchild(chargeur); chargeur.contentloaderinfo.addeventlistener(event.complete, imagechargee); function imagechargee(event:event) { trace("fin du chargement"); E Réaliser une jauge de chargement d'une image 1. Placez une image intitulée image1.png dans le même dossier que votre fichier.fla. 2. Placez un texte dynamique sur la scène que vous intitulez infocharge. 3. Placez un clip sur la scène (un rectangle au point d'alignement à gauche) que vous intitulez barreprogression. var chargeur:loader; var adresseimage:urlrequest = new URLRequest("image1.jpg"); chargeur = new Loader(); chargeur.load(adresseimage); chargeur.x=150; addchild(chargeur); chargeur.contentloaderinfo.addeventlistener(progressevent.progress,animerpr eloader); function animerpreloader(evt:progressevent) { barreprogression.scalex = evt.bytesloaded / evt.bytestotal; infocharge.text = Math.round(evt.bytesLoaded / evt.bytestotal*100).tostring()+" %"; 15. LA VIDEO A Définir la source d'une vidéo 1. Faites glisser le composant de type FLVPlayback de la palette Composants (Fenêtre/Composants) dans la bibliothèque de votre animation. 2. Placez ce symbole sur la scène et nommez l'objet d'affichage obtenu, exemple : ecran 3. Saisissez le script ci dessous dans la fenêtre Actions. 30

Memento AS3 - David TARDIVEAU ecran.source = "Luna.flv"; Remarque : Le chemin indiqué ("luna.flv" dans l'exemple ci dessus) est toujours relatif à la page HTML qui contient le SWF dans lequel se trouve la vidéo que vous placez sur la scène. B Affecter un contrôleur à une vidéo Pour commencer, ouvrez le dossier qui se trouve à l'adresse suivante : Adobe Flash CS3/Configuration/FLVPlayback Skins/ActionScript 3.0 Choisissez un fichier que vous placez ensuite dans le dossier qui contient votre animation.fla. Ajoutez les lignes d'instructions ci dessous à votre script principal. ecran.skin = "ma_skin.swf"; ecran.skinbackgroundcolor = 0xAB99CB; ecran.skinbackgroundalpha = 0.8; ecran.skinautohide = true; C Contrôler la lecture et la pause d'une vidéo 1. Nommez un objet d'affichage de type FLVPlayback sur la scène, ex. : ecran. 2. Placez deux symboles sur la scène et nommez les objets d'affichage obtenus sous les noms boutonlecture et boutonpause. 3. Saisissez le script ci dessous dans la fenêtre Actions. ecran.source = "Luna.flv"; boutonlecture.addeventlistener(mouseevent.mouse_down,lirevideo); boutonpause.addeventlistener(mouseevent.mouse_down,mettreenpause); function lirevideo(evt:mouseevent) { ecran.play(); function mettreenpause(evt:mouseevent) { ecran.pause(); D Réaliser un bouton Lecture/Pause 1. Nommez un objet d'affichage de type FLVPlayback sur la scène, ex. : ecran. 2. Créez un symbole de type clip qui contient deux images clés. Sur la première des deux images, dessinez l'apparence d'un bouton symbolisant la lecture d'un média. Sur la deuxième, dessinez l'apparence d'un bouton symbolisant la mise en pause d'un média. Placez la fonction stop() sur la première image. 3. Placez ce symbole sur la scène et nommez l'objet d'affichage obtenu, ex. : btlecturepause. 4. Saisissez le script ci dessous dans la fenêtre Actions. 31

Memento AS3 - David TARDIVEAU ecran.source = "Luna.flv"; ecran.autoplay = true; btlecturepause.gotoandstop(2); btlecturepause.buttonmode = true btlecturepause.addeventlistener(mouseevent.mouse_down,lirevideo); function lirevideo(evt:mouseevent) { if (ecran.state=="playing") { ecran.pause(); boutonlecturepause.gotoandstop(1); else { ecran.play(); boutonlecturepause.gotoandstop(2); E Placer dynamiquement une vidéo sur la scène 1. Faites glisser le composant FLVPlayback de la palette Composants (Fenêtre/Composants) dans la bibliothèque de votre animation. 2. Saisissez le script ci dessous dans la fenêtre Actions. import fl.video.flvplayback; var ecran:flvplayback = new FLVPlayback(); addchild(ecran); ecran.source = "Luna.flv"; ecran.setsize(384,216); ecran.x = 8; ecran.y = 8; F Déplacer la tête de lecture de la vidéo 1. Nommez un objet d'affichage de type FLVPlayback sur la scène, ex. : ecran. 2. Placez trois symboles sur la scène et nommez les objets d'affichage obtenus, btinstant1, btinstant2 et btinstant3. 3. Saisissez le script ci dessous dans la fenêtre Actions. ecran.source = "Luna.flv"; btinstant1.addeventlistener(mouseevent.mouse_down,allerinstant1); btinstant2.addeventlistener(mouseevent.mouse_down,allerinstant2); btinstant3.addeventlistener(mouseevent.mouse_down,allerinstant3); function allerinstant1(evt:mouseevent) { ecran.seek(2); function allerinstant2(evt:mouseevent) { ecran.seek(5); function allerinstant3(evt:mouseevent) { ecran.seek(7); 32

Memento AS3 - David TARDIVEAU Autre script possible : btinstant1.addeventlistener(mouseevent.mouse_down,allerinstant); btinstant2.addeventlistener(mouseevent.mouse_down,allerinstant); btinstant3.addeventlistener(mouseevent.mouse_down,allerinstant); btinstant1.temps=2; btinstant2.temps=5; btinstant3.temps=7; function allerinstant(evt:mouseevent) { ecran.seek(evt.currenttarget.temps); G Gérer les repères dans une vidéo 1. Nommez un objet d'affichage de type FLVPlayback sur la scène, ex. : ecran. 2. Placez sur la scène, un texte dynamique et nommez l'objet d'affichage obtenu, ex. : messagevideo 3. Saisissez le script ci dessous dans la fenêtre Actions. import fl.video.metadataevent; ecran.source = "Luna.flv"; ecran.addascuepoint(2,"oui, oui"); ecran.addascuepoint(6,"c'est qui?"); ecran.addascuepoint(10,"a quelle heure?"); ecran.addeventlistener(metadataevent.cue_point,repereatteint); function repereatteint(evt:metadataevent) { messagevideo.text = evt.info. name; H Détecter la fin d'une vidéo 1. Nommez un objet d'affichage de type FLVPlayback sur la scène, ex. : ecran. 2. Placez sur la scène, un texte dynamique et nommez l'objet d'affichage obtenu, ex. : messageinformation 3. Saisissez le script ci dessous dans la fenêtre Actions. import fl.video.videoevent; ecran.addeventlistener(videoevent.complete,lectureterminee); function lectureterminee(evt:videoevent) { messageinformation.text = "Fin"; I Réaliser une jauge de lecture 1. Placez sur la scène, un symbole de type clip qui représente un rectangle dans le sens de la largeur (alignement du point d'ancrage à gauche) et nommez l'objet d'affichage obtenu, ex. : jaugelecture. 2. Saisissez le script ci dessous dans la fenêtre Actions. import fl.video.videoevent; ecran.source = "Luna.flv"; 33

Memento AS3 - David TARDIVEAU ecran.playheadupdateinterval = 100; ecran.addeventlistener(videoevent.playhead_update,miseajourjauge); ecran.addeventlistener(videoevent.complete,lectureterminee); function miseajourjauge(evt:videoevent) { jaugelecture.scalex = ecran.playheadtime/ecran.totaltime; function lectureterminee(evt:videoevent) { jaugelecture.scalex = 0; J Connaître l'état de lecture d'une vidéo 1. Nommez un objet d'affichage de type FLVPlayback sur la scène, ex. : ecran. 2. Affectez un contrôleur à l'objet d'affichage. 3. Placez sur la scène, un texte dynamique et nommez l'objet d'affichage obtenu, ex. : messageinfo 4. Saisissez le script ci dessous dans la fenêtre Actions. import fl.video.videoevent; ecran.source = "Luna.flv"; ecran.addeventlistener(videoevent. PAUSED_STATE_ENTERED,pauseActivee); ecran.addeventlistener(videoevent.playing_state_entered,lectureactivee); function pauseactivee(evt:videoevent) { messageinfo.text = "Pause"; function lectureactivee(evt:videoevent) { messageinfo.text = ""; K Afficher le temps écoulé d'une vidéo 1. Placez simplement sur la scène, un texte dynamique et nommez l'objet d'affichage obtenu, ex. : messageinfo. 2. Saisissez le script ci dessous dans la fenêtre Actions import fl.video.videoevent; ecran.source = "Luna.flv"; var positiontete:number; var heures:*; var minutes:*; var secondes:*; ecran.addeventlistener(videoevent.playhead_update,lectureencours); ecran.playheadupdateinterval = 500; function lectureencours(evt:videoevent) { positiontete = ecran.playheadtime; heures = Math.floor(positionTete/3600); minutes = Math.floor(positionTete/60); secondes = Math.floor(positionTete%60); heures= heures<=9? "0"+heures : heures; minutes= minutes<=9? "0"+minutes : minutes; 34

Memento AS3 - David TARDIVEAU secondes= secondes<=9? "0"+secondes : secondes; messageinfo.text = heures+":"+minutes+":"+secondes; 16. LE SON A Lecture automatique d'un son 1. Placez un son intitulé Chopin.mp3 dans le même dossier que votre fichier.fla. var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Chopin.mp3"); ecoute.load(adressefichierson); ecoute.play(); Remarque : Le chemin indiqué ("Chopin.mp3" dans l'exemple ci dessus) est toujours relatif à la page HTML qui contient le SWF dans lequel se trouve la vidéo que vous placez sur la scène. B Lire et arrêter un son à partir de deux boutons 1. Placez un son intitulé Chopin.mp3 dans le même dossier que votre fichier.fla. 2. Placer deux objets d'affichage de type Clip sur la scène que vous intitulez boutonlecture et boutonarret. var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Chopin.mp3"); var piste1:soundchannel; ecoute.load(adressefichierson); boutonlecture.addeventlistener(mouseevent.mouse_down,lireson); boutonarret.addeventlistener(mouseevent.mouse_down,arreterson); function lireson(evt:mouseevent) { piste1 = ecoute.play(); function arreterson(evt:mouseevent) { piste1.stop(); C Réaliser un bouton Lecture/Pause 1. Placez un son intitulé Chopin.mp3 dans le même dossier que votre fichier.fla. 2. Placez un objet d'affichage de type Clip sur la scène que vous nommez boutonlecturepause. 3. Placez également un texte dynamique que vous nommez etiquettebouton. var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Chopin.mp3"); var piste1:soundchannel; ecoute.load(adressefichierson); 35

Memento AS3 - David TARDIVEAU on); etiquettebouton.text="lecture"; var positiontete:number = 0; boutonlecturepause.addeventlistener(mouseevent.mouse_down,lecturepauses function lecturepauseson(evt:mouseevent) { if (etiquettebouton.text=="lecture") { piste1 = ecoute.play(positiontete); etiquettebouton.text="pause"; else { positiontete=piste1.position; etiquettebouton.text="lecture"; piste1.stop(); D Détecter la fin d'un son 1. Placez un son intitulé Chopin.mp3 dans le même dossier que votre fichier.fla. 2. Placez un objet d'affichage de type Clip sur la scène que vous nommez boutonlecture. var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Chopin.mp3"); ecoute.load(adressefichierson); var piste1:soundchannel; boutonlecture.addeventlistener(mouseevent.mouse_down,lectureson); function lectureson(evt:mouseevent) { piste1 = ecoute.play(); boutonlecture.mouseenabled = false; boutonlecture.alpha=0.7; piste1.addeventlistener(event.sound_complete,finduson); function finduson(evt:event) { boutonlecture.mouseenabled = true; boutonlecture.alpha=1; piste1.removeeventlistener(event.sound_complete,finduson); E Exécuter une action lors de l'écoute d'un son 1. Placez un son intitulé Chopin.mp3 dans le même dossier que votre fichier.fla. 2. Placez un objet d'affichage de type Clip sur la scène que vous nommez boutonlecture. 3. Placez également un texte dynamique que vous nommez affichagetemps. var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); ecoute.load(adressefichierson); var piste1:soundchannel; var positiontete:number = 0; var heures:*; 36

Memento AS3 - David TARDIVEAU var minutes:*; var secondes:*; boutonlecture.addeventlistener(mouseevent.mouse_down,lectureson); function lectureson(evt:mouseevent) { piste1 = ecoute.play(); boutonlecture.addeventlistener(event.enter_frame,sonencours); function sonencours (evt:event) { positiontete = piste1.position/1000; heures = Math.floor(positionTete/3600); minutes = Math.floor(positionTete/60); secondes = Math.floor(positionTete%60); heures= heures<=9? "0"+heures : heures; minutes= minutes<=9? "0"+minutes : minutes; secondes= secondes<=9? "0"+secondes : secondes; affichagetemps.text = heures+":"+minutes+":"+secondes; 37