You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
MASTER IPM EAD 2010-2012<br />
Cours Flash<br />
Chapitre 6 : Programmation avec ActionScript 3, <strong>partie</strong> 3<br />
Rappel : les fichiers fla et swf sont dans le fichier « 6_Programmation_AS3_3.zip ».<br />
SOMMAIRE<br />
1 CHARGEMENT DE FICHIERS SWF ..................................................................................................... 2<br />
2 CHARGEMENT DE TEXTE ET DE VARIABLES ................................................................................ 3<br />
2.1 CHARGEMENT DE TEXTE ............................................................................................................................ 3<br />
2.2 CHARGEMENT DE VARIABLES .................................................................................................................... 3<br />
3 XML .............................................................................................................................................................. 5<br />
4 LE DOCUMENTCLASS ............................................................................................................................ 8<br />
4.1 SI VOUS AVEZ DES CONNAISSANCES EN POO ............................................................................................ 8<br />
4.2 SI VOUS N’AVEZ PAS DE CONNAISSANCE EN POO ...................................................................................... 9<br />
5 PROGRAMMATION ORIENTEE OBJET (POO) ............................................................................... 10<br />
6 CONNEXION AVEC PHP ....................................................................................................................... 11<br />
6.1 ENVOI DE DONNEES A PHP EN MODE GET .............................................................................................. 11<br />
6.2 EXEMPLE 2 : ENVOI DISCRET DES DONNEES ET TRAITEMENT APRES EXECUTION DU PHP ........................ 13<br />
7 PHP ET MYSQL ....................................................................................................................................... 17<br />
8 APPELER UNE PAGE WEB NAVIGATETOURL .............................................................................. 19<br />
8.1 PREAMBULE ............................................................................................................................................ 19<br />
8.2 PARAMETRES DE PUBLICATION DE FLASH CS3 ........................................................................................ 19<br />
8.3 LA FONCTION NAVIGATETOURL ............................................................................................................. 23<br />
9 C’EST FINI ! ............................................................................................................................................. 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
1 Chargem<strong>en</strong>t de fichiers SWF<br />
Une animation Flash (SWF) peut charger dynamiquem<strong>en</strong>t d’autres SWF. Cette possibilité<br />
offre plusieurs intérêts :<br />
- le travail <strong>en</strong> équipe. Chaque membre de l’équipe peut ainsi travailler sur une<br />
animation séparée, et il suffit <strong>en</strong>suite d’avoir une animation qui s’occupe de charger et<br />
décharger les animations selon les besoins.<br />
- la découpe du travail. Même si vous travaillez seul, il est plus facile d’avoir 10 petites<br />
animations qu’une seule qui représ<strong>en</strong>te la somme des 10 petites.<br />
- la maint<strong>en</strong>ance. Quand vous devez corriger une erreur, modifier une petite animation<br />
sera plus rapide que modifier une grosse animation.<br />
- un chargem<strong>en</strong>t + rapide. Quand vous découpez une animation, essayez de faire une<br />
petite première animation. Ainsi, elle se chargera très vite, ce qui est intéressant pour<br />
Internet…<br />
Vous trouverez un exemple complet dans « animation qui charge.fla » et « animation<br />
chargée.fla ».<br />
- Animation chargée. Cette animation conti<strong>en</strong>t :<br />
o un fond de scène bleu foncé ;<br />
o un clip « vert » qui réagit au clic sur lui ;<br />
o un bouton qui <strong>en</strong>voie un message à l’« animation qui charge » cette animation.<br />
Pour que le message (c'est-à-dire un événem<strong>en</strong>t) soit <strong>en</strong>voyé à l’animation qui<br />
charge, on utilise MovieClip(racine) avec racine égal à<br />
root.par<strong>en</strong>t.root pour accéder à la scène qui charge. La raison est assez<br />
technique et n’a pas d’intérêt pour votre formation. N’hésitez pas à faire du<br />
copier-coller de mon code dans vos animations. Repr<strong>en</strong>ez la variable racine et<br />
le code MovieClip(racine) pour accéder à la scène qui charge. Dans mon<br />
exemple, vous verrez ainsi qu’on accède au clip « rouge » dans la scène qui<br />
charge.<br />
- Animation qui charge. Cette animation conti<strong>en</strong>t :<br />
o un fond de scène jaune ;<br />
o un clip « rouge » qui ne fait ri<strong>en</strong> ;<br />
o un bouton qui <strong>en</strong>voie un message au clip « vert » de l’animation chargée. Pour<br />
charger l’animation, on utilise un Loader et un URLRequest. Ici aussi, ne vous<br />
préoccupez pas des détails techniques. Faites du copier-coller et changez<br />
seulem<strong>en</strong>t le nom et le chemin du fichier SWF à charger. Notez que vous<br />
devez faire un addChild pour que l’animation chargée soit affichée sur la<br />
scène. Pour accéder à la scène chargée, on utilise<br />
MovieClip(chargeur.cont<strong>en</strong>t).<br />
Quelques remarques :<br />
- si vous testez « animation chargée » seule, vous aurez un message d’erreur si vous<br />
cliquez sur le bouton puisque l’animation visée par le bouton n’est pas chargée avant.<br />
Pour tester l’<strong>en</strong>semble correctem<strong>en</strong>t, vous devez lancer « animation qui charge » <strong>en</strong><br />
premier.<br />
- Une animation chargée a toujours sa scène qui devi<strong>en</strong>t transpar<strong>en</strong>te. Seuls les objets<br />
prés<strong>en</strong>ts sur la scène rest<strong>en</strong>t visibles. Vous aurez certainem<strong>en</strong>t constaté que la couleur<br />
bleue de la scène chargée a disparu.<br />
- si vous modifier l’une ou l’autre animation, n’oubliez pas de recréer le SWF associé<br />
pour que l’<strong>en</strong>semble fonctionne correctem<strong>en</strong>t.<br />
Flash : Découverte d’Action Script Page 2 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
2 Chargem<strong>en</strong>t de texte et de variables<br />
2.1 Chargem<strong>en</strong>t de texte<br />
Il est très intéressant de pouvoir charger du texte dynamiquem<strong>en</strong>t. Cela vous permet par<br />
exemple sur une page web d’avoir une animation Flash qui affiche le dicton du jour, le Saint<br />
du jour, etc., sans devoir regénérer le SWF chaque fois.<br />
Note : l’aspect multilingue sort du cadre IPM, mais au fur et à mesure des versions de<br />
Flash, cette fonctionnalité se simplifie. N’hésitez pas à consulter l’aide sur ce point si<br />
vous <strong>en</strong> avez besoin <strong>en</strong> stage.<br />
Pour charger un fichier texte, il faut d’abord <strong>en</strong> avoir un ☺. Vous trouverez un exemple<br />
simple dans « La Programmation Objet.txt ». Son cont<strong>en</strong>u n’a aucune importance <strong>en</strong> luimême<br />
pour ce <strong>cours</strong>, mais il faut juste compr<strong>en</strong>dre que ce doit être du texte pur, c'est-à-dire<br />
pas de mise <strong>en</strong> forme tel que gras, italique, polices différ<strong>en</strong>tes, etc. Vous pouvez donc le créer<br />
avec n’importe quel logiciel de texte (bloc note, Wordpad, Word,…).<br />
Ensuite, pour charger le fichier texte, il suffit de quelques lignes. Vous trouverez un exemple<br />
simple dans « lecture texte.fla ». Notez que pour que cet exemple fonctionne, j’ai déposé une<br />
occurr<strong>en</strong>ce du composant TextArea sur la scène, et je lui ai donné un nom d’occurr<strong>en</strong>ce. Sur<br />
le principe, il faut vous rappeler que lors d’un chargem<strong>en</strong>t d’un fichier externe (comme un<br />
fichier texte, mais aussi XML comme nous le verrons un peu plus loin) le cont<strong>en</strong>u du fichier<br />
n’est accessible qu’après avoir été chargé, ce qui est possible grâce au list<strong>en</strong>er sur<br />
Ev<strong>en</strong>t.COMPLETE. Vous accédez alors au cont<strong>en</strong>u par URLLoader(e.target).data.<br />
Dans « lecture texte avec boutons.fla », vous trouverez un autre exemple permettant de<br />
charger au choix 3 textes grâce à 3 boutons.<br />
2.2 Chargem<strong>en</strong>t de variables<br />
Maint<strong>en</strong>ant que vous savez comm<strong>en</strong>t charger du texte, nous allons améliorer cette technique<br />
pour charger des variables avec leur cont<strong>en</strong>u. Comme exemple, supposons que dans notre<br />
animation vous vouliez afficher la date, le dicton et les fêtes du jour, mais que vous ne voulez<br />
pas passer par une base de données. Dans ce cas, vous pouvez utiliser un fichier de variables<br />
pour résoudre ce problème.<br />
Vous trouverez la solution dans « lecture fichiers de variables.fla ». Cette animation charge le<br />
fichier « dicton du jour.txt » qui est un fichier texte pur (comme précédemm<strong>en</strong>t), mais la<br />
différ<strong>en</strong>ce est dans son cont<strong>en</strong>u et son interprétation. En effet, le fichier est structuré sous la<br />
forme :<br />
nomDeVariable1=valeur&nomDeVariable2=valeur&nomDeVariable3=valeur…<br />
Dans le fichier, vous trouverez ainsi une variable date_du_jour, une variable dicton et une<br />
variable saints. <strong>Le</strong> chargem<strong>en</strong>t du fichier se fait de façon similaire à ce que nous avons vu<br />
juste avant, mais la différ<strong>en</strong>ce fondam<strong>en</strong>tale est dans l’interprétation du cont<strong>en</strong>u. En effet, la<br />
ligne uneInfo.dataFormat = URLLoaderDataFormat.VARIABLES dit que Flash doit<br />
interpréter le cont<strong>en</strong>u comme des variables avec leur valeur, et non pas comme du simple<br />
texte. Sachez pour information qu’<strong>en</strong> plus du format VARIABLES, il existe le format TEXT qui<br />
est le format par défaut (c’est pour cela que je ne l’ai pas écrit précédemm<strong>en</strong>t), et le format<br />
BINARY qui vous permet de charger des données binaires.<br />
Flash : Découverte d’Action Script Page 3 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Cet exemple vous montre égalem<strong>en</strong>t comm<strong>en</strong>t gérer une erreur de chargem<strong>en</strong>t du fichier. Il<br />
existe beaucoup de types d’erreurs différ<strong>en</strong>tes qui peuv<strong>en</strong>t toutes être gérées<br />
indép<strong>en</strong>damm<strong>en</strong>t, mais ceci est un boulot d’informatici<strong>en</strong>, pas d’IPM. Ret<strong>en</strong>ez juste que ça<br />
existe.<br />
Pour <strong>en</strong> finir sur cet exemple, il n’est pas utile de tout compr<strong>en</strong>dre. Vous pouvez ici <strong>en</strong>core<br />
faire du copier-coller <strong>en</strong> changeant simplem<strong>en</strong>t le nom et l’adresse du fichier, ainsi que son<br />
cont<strong>en</strong>u bi<strong>en</strong> sûr ☺. Par contre, ce format d’échange (variable=valeur&…) est à mémoriser<br />
car c’est un de ceux que Flash utilise pour communiquer avec PHP.<br />
Flash : Découverte d’Action Script Page 4 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
3 XML<br />
Cette <strong>partie</strong> suppose que vous connaissez XML. Si ce n’est pas le cas, consultez<br />
év<strong>en</strong>tuellem<strong>en</strong>t les ressources nécessaires, par exemple votre <strong>cours</strong> XML, des livres ou des<br />
sites internet.<br />
Pour cette <strong>partie</strong>, nous nous intéressons uniquem<strong>en</strong>t aux fichiers XML (.xml) ; nous<br />
n’abordons pas les DTD, Schema, fichiers XSL ou XSLT, et autres fichiers <strong>en</strong> rapport avec la<br />
technologie XML.<br />
<strong>Le</strong> but de cette <strong>partie</strong> est de compr<strong>en</strong>dre comm<strong>en</strong>t Flash peut lire un fichier XML, et naviguer<br />
dans des données XML. Nous ne verrons pas comm<strong>en</strong>t créer des données XML (<strong>en</strong> mémoire<br />
uniquem<strong>en</strong>t car Flash n’autorise pas la création de fichier sur votre disque dur pour des<br />
raisons de sécurité) car cela va au-delà de ce qu’on att<strong>en</strong>d de vous <strong>en</strong> IPM, mais sachez que la<br />
création de données XML et leur manipulation <strong>en</strong> mémoire est tout à fait possible avec Flash.<br />
Depuis la version CS3, Flash manipule XML <strong>en</strong> utilisant ECMAScript pour XML (E4X), ce<br />
qui le r<strong>en</strong>d aussi performant que Java par exemple.<br />
Un exemple courant d’utilisation d’XML est la lecture de flux RSS. Si cela vous intéresse,<br />
vous trouverez un exemple dans l’aide de Flash dans la rubrique « Utilisation de XML ><br />
Exemple : Chargem<strong>en</strong>t de données RSS depuis Internet ».<br />
Pour faire simple, au cas où vous n’auriez à ce mom<strong>en</strong>t précis aucune connaissance sur XML,<br />
ret<strong>en</strong>ez que XML est un format de données textuelles, structurées <strong>en</strong> balises (comme HTML)<br />
où les balises peuv<strong>en</strong>t être ce qu’on veut.<br />
Voici un petit exemple (fichier « carnet.xml ») qui va nous servir juste après :<br />
<br />
<br />
<br />
Durand<br />
Eric<br />
eric@durand.com<br />
<br />
<br />
Martin<br />
Eva<br />
eva@martin.com<br />
<br />
<br />
Dupont<br />
Luc<br />
luc@dupont.com<br />
<br />
<br />
Note : vous pouvez ouvrir ce fichier avec le bloc-notes, Wordpad, Word, et même<br />
votre navigateur web. Att<strong>en</strong>tion, certains (comme Chrome) n’afficheront pas les<br />
balises. Dans ce cas, vous devrez demander à afficher le code source pour voir les<br />
balises.<br />
Flash : Découverte d’Action Script Page 5 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Comme <strong>en</strong> HTML, toute balise ouverte doit être fermée, et on peut imbriquer des balises dans<br />
des balises. En XML, on parle de balise (par exemple ), mais égalem<strong>en</strong>t de nœud (le<br />
nœud ‘nom’) car un fichier XML (comme HTML) peut être vu comme un arbre. Il y a la<br />
racine (ici le nœud ‘carnet’), et les fils de la racine (les ‘personne’), qui ont eux-mêmes<br />
d’autres nœuds fils (‘nom’, ‘pr<strong>en</strong>om’ et ‘adressemail’). Un nœud peut avoir des attributs ;<br />
par exemple le nœud ‘personne’ a 3 fils (‘nom’, ‘pr<strong>en</strong>om’…) et un attribut ‘numeroSecu’.<br />
Vous avez la même chose avec HTML par exemple où IMG est le nœud et SRC<br />
est un attribut.<br />
<strong>Le</strong> fichier XML ci-dessus conti<strong>en</strong>t donc 3 personnes, ayant chacune un nom, un prénom et un<br />
email, ainsi qu’un n° de sécurité sociale (simplifié). Nous allons voir comm<strong>en</strong>t charger ce<br />
fichier et trouver des informations dans ce fichier (qui pourrait cont<strong>en</strong>ir des c<strong>en</strong>taines de<br />
personnes…).<br />
<strong>Le</strong> fichier « XML.fla » conti<strong>en</strong>t 3 versions de lecture du fichier XML « carnet ». Vous noterez<br />
au passage qu’on charge un docum<strong>en</strong>t XML de façon similaire à un fichier texte…<br />
- La version 1 se cont<strong>en</strong>te d’afficher tout ce qui a été chargé. Vous remarquerez que<br />
seules les données XML sont gardées, l’<strong>en</strong>-tête est ignoré<br />
par Flash.<br />
- La version 2 fait une requête dans les données pour ne garder que les nœuds ‘nom’ et<br />
stocke le résultat dans une liste (XMLList), ce qui facilite <strong>en</strong>suite le traitem<strong>en</strong>t de ces<br />
données. Cette requête est faite grâce à new XMLList(arboXML.personne.nom). La<br />
lecture du résultat est traitée par une boucle ‘for each’. <strong>Le</strong> résultat affiché est :<br />
Durand<br />
Martin<br />
Dupont<br />
- La version 3 est un exemple de ce que l’on fait généralem<strong>en</strong>t avec XML dans Flash,<br />
c'est-à-dire naviguer dans les données pour <strong>en</strong> extraire ce dont on a besoin. Rappelezvous<br />
qu’on peut égalem<strong>en</strong>t créer des données XML <strong>en</strong> mémoire (fonction<br />
app<strong>en</strong>dChild par exemple), mais que ceci est hors programme pour IPM.<br />
Dans cette version 3, on affiche :<br />
• tous les nœuds ‘personne’ (et leur cont<strong>en</strong>u) avec trace(arboXML.personne)<br />
• la seconde personne (car les tableaux comm<strong>en</strong>c<strong>en</strong>t toujours à l’indice 0) avec<br />
trace(arboXML.personne[1])<br />
• le nombre d’<strong>en</strong>fants (c'est-à-dire de nœuds fils) du second nœud ‘personne’<br />
avec trace(arboXML.personne[1].childr<strong>en</strong>().l<strong>en</strong>gth()). Ce nœud a 3<br />
fils (nom, pr<strong>en</strong>om et adressemail).<br />
• <strong>Le</strong> nom de la personne dont l’attribut numeroSecu est égal à 789 avec<br />
trace(arboXML.personne.(@numeroSecu=="789").nom), c'est-à-dire<br />
Dupont.<br />
• <strong>Le</strong> nombre de fils de la racine, c'est-à-dire le nombre de fils du nœud ‘carnet’,<br />
donc le nombre de personnes, c'est-à-dire 3, avec<br />
trace(arboXML.childr<strong>en</strong>().l<strong>en</strong>gth()).<br />
• <strong>Le</strong> nœud ‘personne’ dont le nœud nom est égal à Martin avec<br />
trace(arboXML.personne.(nom=="Martin")).<br />
<strong>Le</strong> résultat final est :<br />
<br />
Durand<br />
Eric<br />
eric@durand.com<br />
<br />
Flash : Découverte d’Action Script Page 6 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
<br />
Martin<br />
Eva<br />
eva@martin.com<br />
<br />
<br />
Dupont<br />
Luc<br />
luc@dupont.com<br />
<br />
<br />
Martin<br />
Eva<br />
eva@martin.com<br />
<br />
3<br />
Dupont<br />
3<br />
<br />
Martin<br />
Eva<br />
eva@martin.com<br />
<br />
P<strong>en</strong>sez pour finir que le fichier XML à charger peut prov<strong>en</strong>ir de votre disque dur ou d’une<br />
URL, donc r<strong>en</strong>voyé par un script PHP par exemple ☺.<br />
Flash : Découverte d’Action Script Page 7 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
4 <strong>Le</strong> docum<strong>en</strong>tClass<br />
Cette <strong>partie</strong> est à la limite du <strong>cours</strong> IPM. J’<strong>en</strong>t<strong>en</strong>ds par là que vous n’êtes pas du tout obligés<br />
de la faire, mais que si vous le faites, cela sera un plus pour vous dans votre niveau Flash. De<br />
plus, ce que nous allons voir ici (ainsi que dans la <strong>partie</strong> suivante consacrée à la POO) est<br />
extrêmem<strong>en</strong>t courant <strong>en</strong> programmation Flash. Vous risquez donc fort de le r<strong>en</strong>contrer dans<br />
votre future vie professionnelle.<br />
Ouvrez le fichier « classe de docum<strong>en</strong>t.fla ». Vous verrez qu’il ne conti<strong>en</strong>t qu’un champ texte<br />
dynamique avec un cont<strong>en</strong>u « aaaaaa…. ». Il n’y a aucune ligne de code AS3 dans ce fichier.<br />
Pourtant, quand vous l’exécutez, le champ texte affiche un autre cont<strong>en</strong>u et si vous cliquez<br />
dessus, son cont<strong>en</strong>u change à nouveau. Il y a donc du code « quelque part » ☺, mais où ???<br />
La réponse est cachée dans les propriétés du docum<strong>en</strong>t (cf. Figure 1). <strong>Le</strong> champ « classe du<br />
docum<strong>en</strong>t » conti<strong>en</strong>t le nom d’un fichier AS3 cont<strong>en</strong>ant le code qui jusqu’à prés<strong>en</strong>t était écrit<br />
dans le scénario principal. Ce fichier s’appelle ici « MaClasse », mais le nom exact est<br />
« MaClasse.as ». Ce fichier se trouve dans le même dossier que le fichier FLA. Vous pouvez<br />
l’ouvrir soit depuis votre disque dur (c’est un simple fichier texte qui normalem<strong>en</strong>t s’ouvrira<br />
dans Flash) soit <strong>en</strong> cliquant sur le stylo à droite du champ « classe du docum<strong>en</strong>t ». Cette<br />
dernière solution est la plus rapide et la plus sûre ; si le fichier n’existe pas, Flash vous le dira<br />
tout de suite.<br />
Figure 1 : propriétés du docum<strong>en</strong>t<br />
Ouvrez à prés<strong>en</strong>t ce fichier MaClasse.as. Si vous avez des connaissances <strong>en</strong> programmation<br />
ori<strong>en</strong>té objet (POO), vous pouvez lire le paragraphe ci-dessous, sinon passez au paragraphe<br />
d’après.<br />
4.1 Si vous avez des connaissances <strong>en</strong> POO<br />
- Toute classe AS3 doit être dans un package dont le nom est optionnel s’il se trouve<br />
dans le même dossier que le FLA. Dans le cas contraire, vous devez lui donner un<br />
nom et respecter le chemin d’accès comme <strong>en</strong> Java par exemple.<br />
- La classe et le nom du fichier .as doiv<strong>en</strong>t avoir exactem<strong>en</strong>t le même nom.<br />
- Un package peut cont<strong>en</strong>ir plusieurs classes, mais il est fortem<strong>en</strong>t conseillé de n’<strong>en</strong><br />
mettre qu’une par fichier .as.<br />
- AS3 utilise l’héritage simple, les interfaces, et les imports de façon semblable à Java.<br />
Pour le cont<strong>en</strong>u des packages livrés avec Flash, reportez-vous à l’aide ou autre.<br />
- <strong>Le</strong> constructeur d’une classe est obligatoirem<strong>en</strong>t public.<br />
- La définition des méthodes respecte la même structure que les fonctions vues<br />
précédemm<strong>en</strong>t ; il faut juste ajouter public, private, etc.<br />
Flash : Découverte d’Action Script Page 8 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
- Quand vous créez un SWF à partir d’un FLA qui utilise un fichier .AS, le SWF<br />
conti<strong>en</strong>t à la fois le .FLA et le .AS. Vous ne pouvez pas exécuter directem<strong>en</strong>t un .AS ;<br />
vous devez au minimum avoir un .FLA vide qui l’appelle.<br />
Pour résumer, cette classe MaClasse ét<strong>en</strong>d la classe Sprite qui est la classe associée de base<br />
à la scène d’une animation Flash. Son constructeur affiche un cont<strong>en</strong>u dans le champ texte<br />
« zoneAffichage » et définit un comportem<strong>en</strong>t sur le clic pour ce champ texte.<br />
4.2 Si vous n’avez pas de connaissance <strong>en</strong> POO<br />
L’utilisation d’un fichier .as comme classe de docum<strong>en</strong>t permet de séparer clairem<strong>en</strong>t le<br />
travail du graphiste de celui de l’informatici<strong>en</strong>. <strong>Le</strong> graphiste se conc<strong>en</strong>tre sur la <strong>partie</strong><br />
animation dans Flash, et l’informatici<strong>en</strong> travaille de son côté sur le comportem<strong>en</strong>t des objets<br />
prés<strong>en</strong>ts dans l’animation. La seule contrainte est de savoir avant quels sont les objets qui<br />
seront manipulés par programmation, c'est-à-dire leurs noms et leurs localisations (sur la<br />
scène, dans des clips, etc.).<br />
<strong>Le</strong> fichier « MaClasse.as » définit ainsi le cont<strong>en</strong>u et le comportem<strong>en</strong>t du champ texte<br />
zoneAffichage. Si demain, vous décidez que le cont<strong>en</strong>u doit être différ<strong>en</strong>t, ou que le champ<br />
texte doit réagir au MOUSE_OVER et non plus au MOUSE_CLICK, vous ne changerez que ce<br />
fichier (vous pouvez essayer <strong>en</strong> <strong>en</strong>levant les comm<strong>en</strong>taires). Par contre, si vous décidez<br />
d’ajouter un clip et un comportem<strong>en</strong>t pour ce clip, il faudra modifier le FLA et le .AS. Nous<br />
verrons un autre exemple de classe AS3 dans la <strong>partie</strong> suivante. Sachez <strong>en</strong>fin que le SWF issu<br />
du FLA conti<strong>en</strong>t égalem<strong>en</strong>t le .AS qui lui est associé. Vous ne livrez donc que le SWF à votre<br />
cli<strong>en</strong>t (jamais le FLA et le AS).<br />
Flash : Découverte d’Action Script Page 9 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
5 Programmation ori<strong>en</strong>tée objet (POO)<br />
Nous allons voir ici comm<strong>en</strong>t donner du comportem<strong>en</strong>t à un clip <strong>en</strong> écrivant le code AS3 <strong>en</strong><br />
dehors du fichier FLA qui le conti<strong>en</strong>t. Cela permet, comme vu juste avant, de séparer le<br />
travail du graphiste et de l’informatici<strong>en</strong>. Nous allons donc écrire une classe AS3 décrivant le<br />
comportem<strong>en</strong>t d’un clip dont le cont<strong>en</strong>u graphique est dans un FLA.<br />
Note : Si vous avez des connaissances <strong>en</strong> POO, sachez qu’avec AS3, vous pouvez<br />
créer vos propres classes, mais nous ne verrons pas cet aspect dans ce <strong>cours</strong> car cela<br />
est hors cont<strong>en</strong>u IPM.<br />
Que vous connaissiez ou non la POO, je ne donne ici que le strict minimum d’informations<br />
pour que vous compr<strong>en</strong>iez le fonctionnem<strong>en</strong>t de ce type de programmation. Je n’att<strong>en</strong>ds pas<br />
de vous que vous sachiez créer des classes de ce type ; ceci est pour les informatici<strong>en</strong>s ou les<br />
Flasheurs chevronnés.<br />
Ouvrez le fichier « Agneaux avec classe agneau.fla » et regardez le code de l’image 1. On y<br />
trouve un code semblable à celui que nous avons vu il y a quelques temps, unAgneau = new<br />
Agneau(stage.stageWidth, stage.stageHeight). Ce code crée une occurr<strong>en</strong>ce<br />
d’Agneau, symbole clip prés<strong>en</strong>t dans la bibliothèque et exporté pour AS3. La différ<strong>en</strong>ce ici<br />
est que j’ai <strong>en</strong> plus écrit du code dans le fichier « Agneau.as » et que ce code décrit le<br />
comportem<strong>en</strong>t d’une occurr<strong>en</strong>ce de ce symbole Agneau. Pour que tout ceci fonctionne, il faut<br />
que :<br />
- <strong>Le</strong> fichier Agneau.as soit dans le même dossier que le FLA<br />
- <strong>Le</strong> symbole AgneauClip soit exporté sous le nom Agneau.<br />
- <strong>Le</strong> nom d’exportation et le nom du .as soi<strong>en</strong>t id<strong>en</strong>tiques.<br />
Si vous regardez à prés<strong>en</strong>t le fichier Agneau.as, vous verrez du code très proche de ce que<br />
nous avons écrit jusqu’à maint<strong>en</strong>ant ; des fonctions décriv<strong>en</strong>t le comportem<strong>en</strong>t sur le clic, le<br />
mouse over, etc.<br />
Quel est l’intérêt de ceci ? Imaginons que votre cli<strong>en</strong>t vous demande une modification dans le<br />
dessin de l’agneau ; dans ce cas, vous demandez à votre graphiste de modifier le clip dans le<br />
FLA, et donc le .AS reste intact et toujours valable. Maint<strong>en</strong>ant, si votre cli<strong>en</strong>t vous demande<br />
de changer le comportem<strong>en</strong>t des agneaux, vous demandez à votre programmeur de modifier le<br />
fichier .AS et donc on garde intact le FLA. Si maint<strong>en</strong>ant on vous demande de modifier les<br />
deux, vous pouvez le faire faire <strong>en</strong> parallèle à votre graphiste et votre programmeur. Sur un<br />
petit exemple comme celui-ci, cela paraît inutile, mais sachez qu’une « vraie » animation<br />
Flash nécessite souv<strong>en</strong>t des dizaines de FLA et au moins autant de .AS !<br />
Si vous ouvrez maint<strong>en</strong>ant « classe agneau.fla », il n’y a plus du tout de code et pourtant<br />
on crée des occurr<strong>en</strong>ces d’agneaux… La solution a été vue précédemm<strong>en</strong>t… la classe du<br />
docum<strong>en</strong>t ! Je vous laisse regarder son cont<strong>en</strong>u. Il n’y a ri<strong>en</strong> de nouveau. J’ai juste ici utilisé à<br />
la fois la classe de docum<strong>en</strong>t et une classe pour le clip Agneau.<br />
Flash : Découverte d’Action Script Page 10 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
6 Connexion avec PHP<br />
Nous allons voir dans cette <strong>partie</strong> comm<strong>en</strong>t <strong>en</strong>voyer des données à PHP et <strong>en</strong> recevoir de<br />
PHP. La connexion avec des bases des données type MySQL étant directem<strong>en</strong>t associée à<br />
PHP, nous n’<strong>en</strong> verrons pas d’exemple ici ; puisque nous aurons vu comm<strong>en</strong>t <strong>en</strong>voyer des<br />
données de PHP à Flash, que ces données soit issues ou non d’une base de données ne change<br />
ri<strong>en</strong> à l’<strong>en</strong>voi de ces données.<br />
6.1 Envoi de données à PHP <strong>en</strong> mode GET<br />
Dans ce premier exemple, nous allons utiliser un formulaire de saisie fait <strong>en</strong> Flash, affiché<br />
dans une page web. Quand on valide le formulaire, on <strong>en</strong>voie son cont<strong>en</strong>u à PHP qui le traite<br />
et affiche une nouvelle page web avec les données qu’il a reçues de Flash.<br />
Ouvrez le fichier « <strong>en</strong>voi de données à PHP.fla ». Je vous laisse le soin de regarder les<br />
champs texte utilisés et leurs noms d’occurr<strong>en</strong>ce. <strong>Le</strong> code AS3 fonctionne de la façon<br />
suivante :<br />
- Pour passer des données de Flash à PHP, Flash appelle la page PHP par la fonction<br />
navigateToURL cont<strong>en</strong>ant une variable cont<strong>en</strong>ant l’URL visée. navigateToURL est<br />
une solution ; nous <strong>en</strong> verrons une autre dans 6.2.<br />
- Cette variable précise si on utilise du GET ou du POST pour <strong>en</strong>voyer les données.<br />
- Cette variable conti<strong>en</strong>t égalem<strong>en</strong>t les données à <strong>en</strong>voyer dans sa propriété data.<br />
- <strong>Le</strong>s données textuelles des champs du formulaire sont stockées dans la variable<br />
donnéesFormulaire. Cette variable est du type URLVariables qui, comme nous<br />
l’avons déjà vu, conti<strong>en</strong>t par défaut du texte. Vous pouvez ajouter autant de données<br />
textuelles que vous voulez (sans toutefois stocker des Mo !). Cette variable est<br />
associée au data de la variable du navigateToURL<br />
Pour le dire plus « simplem<strong>en</strong>t », vous stockez les données que vous voulez <strong>en</strong>voyer dans une<br />
variable de type URLVariables, et vous stockez <strong>en</strong>suite cette variable URLVariable<br />
dans la propriété data la variable de type URLRequest que vous passez <strong>en</strong> paramètre à la<br />
fonction navigateToURL. On peut comparer cela à quelqu'un qui <strong>en</strong>verrait un vase fragile<br />
par la poste. Il mettrait son vase (les données que vous voulez <strong>en</strong>voyer à PHP) dans un carton<br />
(la variable URLVariable), puis ce carton dans un autre carton (la variable URLRequest)<br />
qu’il <strong>en</strong>voie (navigateToURL) <strong>en</strong>suite par la poste.<br />
Code FLA<br />
// Définition du list<strong>en</strong>er pour le bouton<br />
boutonEnvoi.addEv<strong>en</strong>tList<strong>en</strong>er(MouseEv<strong>en</strong>t.CLICK, <strong>en</strong>voiMessage);<br />
// fonction qui récupère les textes dans le formulaire et les <strong>en</strong>voie à PHP<br />
function <strong>en</strong>voiMessage(evt:MouseEv<strong>en</strong>t):void<br />
{<br />
// on récupère les textes saisis dans le formulaire<br />
var unMessage:URLVariables = new URLVariables();<br />
unMessage.sujet = sujet.text;<br />
unMessage.destinataire = destinataire.text;<br />
unMessage.messageMail = texteMessage.text;<br />
// on prépare l'<strong>en</strong>voi <strong>en</strong> GET à la page PHP<br />
var requete:URLRequest = new URLRequest("<strong>en</strong>voi_GET.php");<br />
requete.method = URLRequestMethod.GET;<br />
// on charge les données dans "data"<br />
Flash : Découverte d’Action Script Page 11 sur 24
}<br />
Code PHP<br />
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Figure 2 : <strong>Le</strong> formulaire Flash avant l’<strong>en</strong>voi à PHP<br />
Figure 3 : résultat affiché par PHP après l’<strong>en</strong>voi depuis Flash<br />
Note importante :<br />
Quand vous ferez des essais, n’oubliez pas de vérifier que la version que vous testez dans la<br />
page HTML est la bonne version. En effet, vos navigateurs utilis<strong>en</strong>t des caches, et vos SWF<br />
sont stockés dans ces caches. Donc pour être sûr que votre version actuelle est bi<strong>en</strong> celle que<br />
vous voyez dans votre navigateur, voici deux solutions :<br />
- la plus simple consiste à changer un petit quelque chose dans votre scène Flash pour<br />
chaque version, par exemple un mot dans un champ texte. Si le nouveau mot est bi<strong>en</strong><br />
celui que vous voyez dans la page web, vous voyez bi<strong>en</strong> la nouvelle version de votre<br />
SWF. Dans le cas contraire, supprimez le SWF et la page html générée, et faites une<br />
nouvelle publication depuis Flash, ou bi<strong>en</strong>…<br />
- la seconde solution consiste à vider le cache de votre navigateur. Chaque navigateur<br />
possède cette fonctionnalité, mais de façon différ<strong>en</strong>te (effacer tout, effacer la dernière<br />
heure, effacer que certains types de fichiers, etc.). A vous de voir comm<strong>en</strong>t procéder<br />
sur vos machines, mais si le cache est vidé avant de faire votre publication depuis<br />
Flash, normalem<strong>en</strong>t vous aurez toujours la dernière version du SWF dans la page<br />
HTML.<br />
6.2 Exemple 2 : <strong>en</strong>voi discret des données et traitem<strong>en</strong>t après<br />
exécution du PHP<br />
L’exemple précéd<strong>en</strong>t fonctionne très bi<strong>en</strong>, mais il a l’inconvéni<strong>en</strong>t d’<strong>en</strong>voyer les données<br />
dans l’adresse de la page PHP, ce qui n’est pas discret, par exemple pour un login/mot de<br />
passe.<br />
Nous allons voir ici une version améliorée de l’exemple précéd<strong>en</strong>t <strong>en</strong> masquant les données<br />
<strong>en</strong>voyées (POST au lieu de GET), et nous allons <strong>en</strong> profiter pour faire exécuter du code AS3<br />
Flash : Découverte d’Action Script Page 13 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
quand Flash reçoit des données de PHP. Ainsi, vous saurez <strong>en</strong>voyer, recevoir, et traiter des<br />
données circulant <strong>en</strong>tre Flash et PHP. De plus, dans cet exemple, on ne change pas de page ;<br />
Flash <strong>en</strong>voie des données à PHP qui à son tour <strong>en</strong> <strong>en</strong>voie à Flash, tout ça dans la même page<br />
web.<br />
Ouvrez « <strong>en</strong>voi discret de données à PHP.fla » er regardez le code AS3. Il conti<strong>en</strong>t <strong>en</strong>tre<br />
autre :<br />
- Une différ<strong>en</strong>ce pour l’<strong>en</strong>voi des données (variable de type URLLoader) ;<br />
- Une fonction qui traite les donnés r<strong>en</strong>voyées par PHP ;<br />
- 3 façons de traiter les données r<strong>en</strong>voyées par PHP.<br />
Code PHP<br />
<strong>Le</strong> code PHP est décomposé comme suit :<br />
- Une fonction qui permet d’<strong>en</strong>voyer des données à Flash<br />
- La récupération des données prov<strong>en</strong>ant de Flash<br />
- L’écriture de ces données dans un fichier texte<br />
- L’<strong>en</strong>voi de données à Flash (ici, principalem<strong>en</strong>t la variable nom qui conti<strong>en</strong>t « Master<br />
IPM »).<br />
Concernant l’<strong>en</strong>voi de données à Flash, j’ai choisi de les <strong>en</strong>voyer <strong>en</strong> les <strong>en</strong>tourant des<br />
nombres 12 et 34 (ceci est totalem<strong>en</strong>t arbitraire et vous pouvez utiliser ce que vous voulez, <strong>en</strong><br />
général on utilise des boolé<strong>en</strong>s ou des 1). Ainsi, si on veut que PHP <strong>en</strong>voie à Flash la variable<br />
Message valant "Coucou", on <strong>en</strong>verra la chaine "résultat=12&Message=Coucou&fin=34".<br />
Pourquoi fait-on cela ? La raison est simple : on veut être sûr que Flash a reçu toutes les<br />
données avant de les traiter. Or, on ne sait pas nécessairem<strong>en</strong>t combi<strong>en</strong> de données doiv<strong>en</strong>t<br />
être reçues. Par contre, si on sait qu’on doit toujours avoir reçu « 12 » au début et « 34 » à la<br />
fin (ou autres valeurs de votre choix), et qu’on reçoit bi<strong>en</strong> ces « 12 » et « 34 » alors on a reçu<br />
tout ce qui est <strong>en</strong>tre les deux, c'est-à-dire les données au complet, donc on peut les traiter.<br />
Cette solution est très souv<strong>en</strong>t utilisée. Il existe cep<strong>en</strong>dant des façons plus élégantes, mais<br />
demandant plus de bagages techniques. Par exemple, on utilise souv<strong>en</strong>t AMFPHP<br />
(http://amfphp.sourceforge.net/ ou http://www.amfphp.org) pour être plus efficace, mais vous<br />
n’avez pas besoin de regarder cela pour IPM.<br />
{<br />
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
$message = utf8_decode($message);<br />
$destinataire = utf8_decode($destinataire) ;<br />
$sujet = utf8_decode($sujet) ;<br />
$unMessage ="Destinataire : ".$destinataire ." Sujet : " . $sujet ."<br />
\n Message : ".$message." \n";<br />
}<br />
else<br />
{<br />
}<br />
?><br />
// écriture des données dans le fichier lesMessages.txt<br />
$fichier=fop<strong>en</strong>("lesMessages.txt","a");<br />
fputs($fichier,$unMessage);<br />
fclose($fichier);<br />
/*<br />
Pour que l'<strong>en</strong>voi de données vers AS3 fonctionne,<br />
il faut <strong>en</strong>voyer la première donnée sous la forme<br />
echo "variable=valeur", ou echo "variable=".utf8_<strong>en</strong>code(valeur),<br />
et les données suivantes seront <strong>en</strong>voyées par<br />
echo "&variable=valeur", ou <strong>en</strong>voi(variable, valeur).<br />
On peut aussi faire echo "variable=valeur&variable=valeur..."<br />
*/<br />
echo "resultat=12";<br />
<strong>en</strong>voi("nom", "Master IPM");<br />
<strong>en</strong>voi("fin",34);<br />
echo "resultat=0";<br />
Figure 4 : <strong>Le</strong> formulaire Flash avant l’<strong>en</strong>voi des données à PHP<br />
Flash : Découverte d’Action Script Page 15 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Figure 5 : <strong>Le</strong> formulaire Flash après le retour des données de PHP<br />
Flash : Découverte d’Action Script Page 16 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
7 PHP et MySQL<br />
Maint<strong>en</strong>ant que vous savez <strong>en</strong>voyer et recevoir des données <strong>en</strong>tre Flash et PHP, vous aimeriez<br />
peut-être travailler avec des bases de données. Cela est tout à fait possible <strong>en</strong> effet, mais nous<br />
sommes ici hors du cadre du <strong>cours</strong> pour vous. Cep<strong>en</strong>dant, je vais vous donner quelques<br />
informations à ce sujet… tout <strong>en</strong> supposant que vous sachiez déjà ce qu’est une base de<br />
données. Si ce n’est pas le cas, vous devrez par exemple consulter des sites tels que wikipedia<br />
pour <strong>en</strong> avoir une idée.<br />
Tout d’abord, faire des bases de données (les créer, les gérer, etc.) est une vraie spécialité<br />
informatici<strong>en</strong>ne. Créer une base avec deux ou trois tables est à la portée que tout le monde ou<br />
presque. Mais une base de données digne de ce nom comporte généralem<strong>en</strong>t des dizaines de<br />
tables, avec des relations complexes <strong>en</strong>tre elles, et elle conti<strong>en</strong>t des milliers, des millions,<br />
voire des milliards d’<strong>en</strong>registrem<strong>en</strong>ts (par exemple la base de données des cli<strong>en</strong>ts de France<br />
Télécom ou de La Redoute).<br />
De telles bases de données ne sont pas écrites <strong>en</strong> PHP et MySQL, mais avec des langages et<br />
outils beaucoup plus performants et robustes (Oracle par exemple). Néanmoins, il est tout à<br />
fait possible de manipuler ces bases de données par une interface <strong>en</strong> Flash. Cela repose sur un<br />
principe similaire à ce que je vais expliquer ci-dessous avec PHP.<br />
Manipuler des données dans une base de données ne peut pas se faire directem<strong>en</strong>t par Flash.<br />
Vous devez passer par un intermédiaire, que ce soit PHP (ou d’autres langages de<br />
programmation) ou d’autres outils (par exemple AMFPHP, http://amfphp.sourceforge.net/, ou<br />
des outils <strong>en</strong>core plus techniques comme des webservices,<br />
http://fr.wikipedia.org/wiki/Webservice). Je ne parlerai ici que de l’utilisation de PHP.<br />
Pour accéder aux données d’une base (pour consulter une base, ajouter des <strong>en</strong>registrem<strong>en</strong>ts,<br />
<strong>en</strong> supprimer, etc.), on doit donc nécessairem<strong>en</strong>t passer par du code PHP. Flash ne sert que<br />
d’affichage ou de zone de saisie ; ce n’est pas lui qui modifie la base de données, c’est PHP.<br />
Pour faire simple, pr<strong>en</strong>ons un exemple. Imaginons que nous ayons une base de données de<br />
cli<strong>en</strong>ts et que nous voulions afficher tous les cli<strong>en</strong>ts du Nord (code postal = 59). Dans ce cas :<br />
- vous avez une interface <strong>en</strong> Flash qui vous permettra de saisir cette information (par<br />
exemple un champ texte où vous taperez 59 ou bi<strong>en</strong> <strong>en</strong>core une liste des codes postaux<br />
dans laquelle vous cliquerez le code postal 59) et d’<strong>en</strong>voyer cette information (par<br />
exemple avec un bouton Valider).<br />
- Une fois que vous avez saisi votre information (le code postal 59), votre validation<br />
appelle un code PHP spécifique <strong>en</strong> lui passant <strong>en</strong> paramètre le code postal 59. Ce code<br />
PHP a pour objectif de :<br />
1. récupérer le ou les paramètres <strong>en</strong>voyés par Flash (ici le code postal, mais on<br />
aurait pu imaginer une requête où on demande tous les cli<strong>en</strong>ts femme du 59,<br />
c'est-à-dire un paramètre pour le sexe et un paramètre pour le code postal) ;<br />
2. exécuter le traitem<strong>en</strong>t correspondant sur la base de données ; ici, le code PHP<br />
va extraire tous les cli<strong>en</strong>ts du Nord depuis la base de données.<br />
3. r<strong>en</strong>voyer à Flash les données extraites. On suppose ici que seuls les noms,<br />
prénoms, et emails sont r<strong>en</strong>voyés à Flash.<br />
- Flash récupère les données r<strong>en</strong>voyées par PHP (dans un format qui a été déterminé à<br />
l’avance bi<strong>en</strong> sûr) et les affiche par exemple dans une liste ou dans une table.<br />
- Si l’utilisateur veut avoir des informations supplém<strong>en</strong>taires lorsqu’il clique sur un<br />
cli<strong>en</strong>t dans la liste créée ci-dessus, ce clic doit appeler un code PHP <strong>en</strong> lui passant <strong>en</strong><br />
Flash : Découverte d’Action Script Page 17 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
paramètre toutes les informations nécessaires (par exemple l’email du cli<strong>en</strong>t). On<br />
retrouve donc le même principe que précédemm<strong>en</strong>t (Flash <strong>en</strong>voie à PHP des données<br />
que PHP traite, puis PHP r<strong>en</strong>voie un résultat à Flash qui l’affiche).<br />
- Si on veut supprimer un cli<strong>en</strong>t <strong>en</strong> cliquant dessus puis <strong>en</strong> cliquant sur un bouton<br />
Supprimer, même principe : on appelle un script PHP spécifique.<br />
Je ne détaille pas ici comm<strong>en</strong>t faire tout cela puisque ceci est <strong>en</strong> dehors du <strong>cours</strong>. Cep<strong>en</strong>dant,<br />
vous pouvez consulter le petit tutoriel <strong>en</strong> deux <strong>partie</strong>s ci-dessous, sans oublier de lire<br />
att<strong>en</strong>tivem<strong>en</strong>t (pour votre culture) les problèmes de sécurité que tout informatici<strong>en</strong> se doit de<br />
connaître.<br />
- Tutoriel <strong>partie</strong> 1 :<br />
http://ressources.mediabox.fr/tutoriaux/flashplatform/dynamique/php/communication_<br />
php_as3<br />
- Tutoriel <strong>partie</strong> 2 :<br />
http://ressources.mediabox.fr/tutoriaux/flashplatform/dynamique/php/communication_<br />
php_as3/ecriture<br />
- Problèmes de sécurité (injection de code) :<br />
http://flash.mediabox.fr/index.php?/topic/129390-pied-a-letrier-as3-acceder-a-unebase-via-phpmysql/<br />
Flash : Découverte d’Action Script Page 18 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
8 Appeler une page web navigateToURL<br />
8.1 Préambule<br />
Avec les problèmes de piratage et autres « hacking », Internet a vu se développer beaucoup de<br />
stratégies de sécurité. Flash fait de même. Au temps de Flash MX 2004 (c'est-à-dire <strong>en</strong>viron<br />
jusqu’<strong>en</strong> 2005), il était facile d’écrire une page web cont<strong>en</strong>ant du Flash et pouvant accéder à<br />
d’autres pages web, y compris sur d’autres sites. A prés<strong>en</strong>t, ceci est révolu, et les paramètres<br />
de sécurité ont fait leur apparition. Nous n’allons pas détailler ceci, mais je voudrais juste<br />
vous y s<strong>en</strong>sibiliser avec quelques mots plus bas.<br />
Note : ces aspects concern<strong>en</strong>t un niveau avancé dans Flash. Si vous devez travailler sur<br />
ce sujet, qui n’est pas simple, consultez l’aide pour plus de précisions, <strong>en</strong> utilisant les<br />
mots-clés « La sécurité dans Flash Player » dans la zone de saisie de recherche.<br />
8.2 Paramètres de publication de Flash CS3<br />
La f<strong>en</strong>être des paramètres de publication de Flash CS3 (m<strong>en</strong>u Fichier>Paramètres de<br />
publication, ou CTRL+MAJ+F12) permet de choisir <strong>en</strong>tre deux « stratégies » pour la<br />
sécurité (cf. Figure 6) : accès au réseau uniquem<strong>en</strong>t, ou accès aux fichiers<br />
locaux uniquem<strong>en</strong>t. Dans ce second cas, toute t<strong>en</strong>tative d’accès à des pages web sera<br />
refusée par Flash et provoquera l’affichage d’une page du site de Adobe (donc obligation<br />
d’être connecté à Internet, sinon aucune chance de résoudre le problème !). Cette page est une<br />
page qui vous permet de régler/définir les paramètres d’accès de Flash à Internet.<br />
Si votre animation (par exemple celle prés<strong>en</strong>tée sur la Figure 7) est <strong>en</strong> mode « accès aux<br />
fichiers locaux uniquem<strong>en</strong>t » et que vous t<strong>en</strong>tez d’<strong>en</strong>freindre le mode de sécurité, par exemple<br />
<strong>en</strong> voulant accéder à la page Web http://www.univ-lille1.fr, vous obti<strong>en</strong>drez un message<br />
d’alerte (cf. Figure 8).<br />
• Si vous cliquez sur OK, vous n’accéderez plus à la page web voulue, sauf si vous<br />
rechargez l’animation (ou la page).<br />
• Si vous cliquez sur « Paramètres… », vous obt<strong>en</strong>ez la page de sécurité chez Adobe<br />
(cf. Figure 9). Choisissez alors le 3 ème onglet (cf. Figure 10), puis choisissez<br />
« Ajouter… » dans le m<strong>en</strong>u (cf. Figure 11). Vous obt<strong>en</strong>ez alors le chemin d’accès<br />
de la dernière animation qui a <strong>en</strong>freint la sécurité. Pour l’ajouter, soit vous faites<br />
un copier-coller de ce chemin dans la zone de texte <strong>en</strong> haut, soit (plus simple !)<br />
vous cliquez sur le bouton « Rechercher des fichiers » qui théoriquem<strong>en</strong>t vous<br />
amène directem<strong>en</strong>t dans le dossier qui conti<strong>en</strong>t l’animation <strong>en</strong> cause (si ce n’est<br />
pas le cas, il vous restera à naviguer dans les dossiers). Dans ce dernier cas, il ne<br />
vous reste plus qu’à la choisir, et vous obt<strong>en</strong>ez alors la Figure 13 qui autorise de<br />
façon perman<strong>en</strong>te l’accès à Internet pour l’animation choisie. Vous pouvez bi<strong>en</strong><br />
évidemm<strong>en</strong>t modifier ses paramètres avec le m<strong>en</strong>u associé.<br />
Flash : Découverte d’Action Script Page 19 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Figure 6 : Paramètres de publication de Flash 8<br />
Figure 7 : Une animation qui laisse p<strong>en</strong>ser qu’on peut accéder à Internet<br />
Flash : Découverte d’Action Script Page 20 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Figure 8 : Message d’alerte de sécurité du lecteur Flash<br />
Figure 9 : page d’Adobe permettant de régler les paramètres de sécurité<br />
Figure 10 : Paramètre globaux de sécurité (3 ème onglet)<br />
Flash : Découverte d’Action Script Page 21 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
Figure 11 : M<strong>en</strong>u permettant d’ajouter, supprimer, modifier des accès<br />
Figure 12 : Affichage du dernier accès refusé<br />
Figure 13 : Autorisation perman<strong>en</strong>te de l’application précisée<br />
Flash : Découverte d’Action Script Page 22 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
8.3 La fonction navigateToURL<br />
La fonction navigateToURL de Flash pr<strong>en</strong>d deux paramètres, dont seul le premier est<br />
obligatoire. La syntaxe de la fonction est : navigateToURL(request:URLRequest,<br />
window:String).<br />
• request: toute URL est valide, par exemple http://www.free.fr (le http:// est<br />
obligatoire !), ftp://www.download.com, ou mailto:jean-claude.tarby@univlille1.fr,<br />
ou <strong>en</strong>core javascript:alert('coucou'). Comme toute URLRequest,<br />
vous pouvez y associer des données (des variables par exemple), une méthode d’<strong>en</strong>voi<br />
(GET/POST), etc.<br />
• windows: Spécifie la f<strong>en</strong>être ou le cadre HTML dans lequel le docum<strong>en</strong>t doit se<br />
charger. Vous pouvez ignorer ce paramètre, <strong>en</strong>trer le nom d'une f<strong>en</strong>être spécifique ou<br />
le sélectionner à partir des noms réservés suivants :<br />
o _self spécifie le cadre actif de la f<strong>en</strong>être <strong>en</strong> <strong>cours</strong> d'utilisation.<br />
o _blank crée une f<strong>en</strong>être.<br />
o _par<strong>en</strong>t appelle le par<strong>en</strong>t du cadre actif.<br />
o _top sélectionne le cadre de plus haut niveau de la f<strong>en</strong>être active.<br />
Vous pouvez égalem<strong>en</strong>t utiliser le nom d’un cadre existant, ou d’une f<strong>en</strong>être web.<br />
Vous pouvez voir un exemple de cette fonction dans « navigateToURL.fla ». Pour tester<br />
correctem<strong>en</strong>t, vous devez publier l’animation (touche F12) et pas simplem<strong>en</strong>t la tester dans<br />
Flash. Dans la f<strong>en</strong>être web qui s’ouvrira après la publication, le premier bouton vous <strong>en</strong>voie à<br />
http://www.univ-lille1.fr/ et le second à adresse semblable à celle-ci-dessous :<br />
http://www.univ-lille1.fr/?exampleUserLabel=Master%20IPM&exampleSessionId=1299611211466.<br />
Cette deuxième page vous affichera le même cont<strong>en</strong>u que la première car le site de Lille 1 ne<br />
pr<strong>en</strong>d pas <strong>en</strong> compte les paramètres que vous <strong>en</strong>voyez, mais vous noterez que les paramètres<br />
affichés dans l’URL sont ceux qui ont été construits par le code AS3 (voir ci-dessous).<br />
univ_Lille1_btn.addEv<strong>en</strong>tList<strong>en</strong>er(MouseEv<strong>en</strong>t.CLICK, lille1);<br />
univ_Lille1_Données_btn.addEv<strong>en</strong>tList<strong>en</strong>er(MouseEv<strong>en</strong>t.CLICK, lille1_données);<br />
function lille1(evt:MouseEv<strong>en</strong>t):void<br />
{<br />
var url:String = "http://www.univ-lille1.fr";<br />
var request:URLRequest = new URLRequest(url);<br />
navigateToURL(request);<br />
}<br />
function lille1_données(evt:MouseEv<strong>en</strong>t):void<br />
{<br />
var url:String = "http://www.univ-lille1.fr";<br />
var variables:URLVariables = new URLVariables();<br />
variables.exampleSessionId = new Date().getTime();<br />
variables.exampleUserLabel = "Master IPM";<br />
var request:URLRequest = new URLRequest(url);<br />
request.data = variables;<br />
navigateToURL(request);<br />
}<br />
Flash : Découverte d’Action Script Page 23 sur 24
MASTER IPM EAD 2010-2012 J.C. Tarby<br />
9 C’est fini !<br />
Et voilà, nous voici arrivés à la fin de ce <strong>cours</strong> Flash et AS3. J’espère que vous avez appris<br />
beaucoup de choses et pris du plaisir à les mettre <strong>en</strong> pratique. Si vous voulez approfondir<br />
Flash et AS3, il y a <strong>en</strong>core une foule de choses que nous n’avons pas abordées, mais qui ne<br />
sont pas du ressort d’un IPM (je vous le rappelle pour la dernière fois ☺ ).<br />
Flash : Découverte d’Action Script Page 24 sur 24