Charger une image ou un swf |
![]() |
Charger une image Pour charger une image ou un SWF sur la scène d'une animation, vous devez faire appel à deux classes :
var adresseImage:URLRequest = new URLRequest("demo.jpg"); chargeur.load(adresseImage); addChild(chargeur);
Note : Vous ne devez pas oublier d'ajouter l'objet d'affichage à la displayList à l'aide de la méthode addChild(), sinon vous ne verrez pas l'image sur la scène. Vous pouvez préciser le nom d'un conteneur d'objet d'affichage (displayObjet container) devant la méthode addChild(). Lorsque vous chargerez une image, vous aurez parfois besoin de connaitre l'instant où l'image est vraiment chargée (le chargement est terminé). Durant ce même chargement, vous aurez peut-être besoin d'informer l'utilisateur de votre animation sur le niveau de charge. Vous devez donc faire appel aux deux évènements Event.COMPLETE et ProgressEvent.PROGRESS.
Pour pouvoir exécuter une ligne d'instruction à la fin du chargement d'une image, vous devez faire appel à l'objet contentLoaderInfo car l'événement Event.COMPLETE n'est pas directement géré par la classe Loader().
function chargementTermine (evt:Event) { trace("Chargement terminé") }
Exécuter une ligne d'instruction durant la phase de chargement function chargementEnCours (evt:ProgressEvent) { jauge.scaleX=evt.currentTarget.bytesLoaded/evt.currentTarget.bytesTotal; } Pour informer l'utilisateur du niveau de chargement d'une image, vous aurez besoin d'utiliser les points abordés ci-dessus, mais pour gagner du temps, Rudy (celui pour qui aucun immeuble ne lui résiste !!!) a préparé pour Yazo.net ce fichier tout préparé pour vous.
Charger un swfRemarque : N'oubliez pas de publier vos animations au format SWF (un simple commande-Entrée (Mac) ou CTRL-Entrée (PC)) avant d'essayer de les charger. Lorsqu'un Flasheur ne maitrise pas très bien la programmation en AS3, et qu'il ne peut donc pas programmer la construction dynamique d'une animation uniquement à base de code, il lui est toujours possible de charger un fichier au format SWF par dessus un autre et cela présente plusieurs avantages, en voici quelques-uns :
Arrêtons ici notre énumération et passons à la procédure : var adresse:URLRequest = new URLRequest("animation1.swf"); chargeur.load(adresse); addChild(chargeur) var adresse = new URLRequest("animation1.swf"); chargeur.load(adresse); addChild(chargeur) Comme nous l'évoquions au début de nos explications sur le chargement d'une animation dans une autre, vous pouvez utiliser cette technique, à travers la méthode load() de la classe Load() pour charger différentes animations les unes après les autres, simulant ainsi une navigation d'écrans en écrans (tel un diaporama). Voici un exemple de script où deux animations peuvent être chargées dans une autre, l'une (des deux animations chargées) se substituant toujours à l'autre.
var adresse:URLRequest = new URLRequest("animation1.swf"); chargeur.load(adresse); addChild(chargeur); function charger1(evt:MouseEvent) { adresse = new URLRequest("animation1.swf"); chargeur.load(adresse); } function charger2(evt:MouseEvent) { adresse = new URLRequest("animation2.swf"); chargeur.load(adresse); } Remarque : Vous devez posséder trois animations intitulées accueil.swf, animation1.swf et animation2.swf. Le script ci-dessus se trouve dans l'animation accueil.swf qui doit également contenir 2 occurrences intitulées rubrique1_bt et rubrique2_bt.
Voilà, c'est aussi simple que ça, mais si vous souhaitez à présent faire communiquer les deux animations, cela se complique un peu. Nous allons aborder cette problématique dans le dernier développement de cette ressource, mais en attendant, voyons comment décharger une animation préalablement chargée sur la scène.
Décharger un swfNous avons deux animations intitulées accueil.swf et animation1.swf. Cette dernière est chargée dans la première grâce au premier script des explications relatives au chargement d'une animation (ci-dessus). Pour pouvoir décharger l'animation aniation1.swf, ajoutez le script ci-dessous dans l'animation accueil.swf.
function tourner(evt:MouseEvent) { chargeur.unload() } Précisons que si vous aviez cherché à charger une autre animation à la place de la première (animation1.swf), sans la décharger préalablement, l'animation animation1.swf aurait tout naturellement été remplacée, comme le démontre le dernier exemple de l'explication sur le chargement d'une animation (l'avant dernier script ci-dessus).
Décharger un SWF à partir d'un clic sur une occurrence contenue dans l'animation à décharger
function tourner(evt:MouseEvent) { MovieClip(racine).chargeur.unload(); } Faire communiquer deux swf imbriqués (l'un chargé dans l'autre)
Comme nous l'évoquions ci-dessus, il n'est pas très facile de faire communiquer deux SWF imbriqués l'un dans l'autre car la syntaxe des deux script nécessaires pour faire dialoguer une animation à avec l'autre (dans les deux sens) est légèrement complexe. Afin de mieux comprendre le mécanisme, essayez par vous même de mettre en pratique l'exemple suivant :
var adresse:URLRequest = new URLRequest("animation1.swf"); chargeur.load(adresse); addChild(chargeur) carreParent.addEventListener(MouseEvent.MOUSE_DOWN,tourner); function tourner(evt:MouseEvent) { MovieClip(chargeur.content).carreEnfant.rotation+=3; } function tourner(evt:MouseEvent) { MovieClip(racine).carreParent.rotation+=3; } Dans le premier script, nous découvrons qu'il existe la propriété content qui permet de faire référence au contenu d'une animation chargée. Pour pouvoir faire appel à la propriété rotation, nous devons d'abord "convertir l'expression" chargeur.content en un symbole de type MovieClip, c'est pourquoi nous l'imbriquons dans le "mot" MovieClip().
Dans le deuxième script, le premier constat est étrange car nous stockons un chemin dans une variable. Une fois encore, comme nous venons de le voir ci-dessous, nous avons besoin de "convertir l'expression" en un MovieClip, c'est pourquoi nous faisons appel à la classe MovieClip(). Mais pourquoi root.parent.root ? Au moment où nous allons cliquer sur l'occurrence carreEnfant, nous allons avoir besoin de contrôler l'occurrence qui se trouve dans l'animation dans laquelle nous avons chargé l'animation animation1.swf. Nous devons donc chercher à remonter la hiérarchie comme nous l'avons fait. Afin que vous comprenniez peut-être un peu mieux la hiérarchie d'une telle syntaxe, voici ce que donne l'exécution des lignes d'instructions ci-dessous à partir de l'animation animation1.swf (animation chargée) et à partir de l'animation accueil.swf (animation qui reçoit le chargement).
|