ACTIONSCRIPT 3 ET MOTION DESIGN

ACTIONSCRIPT 3 ET MOTION DESIGN

Arrêter une vidéo dans un SWF imbriqué Un site bien conçu conduit généralement à isoler les rubriques dans des SWF séparés et à ne les importer que s’ils ont été invoqués par l’utilisateur. Dans ce contexte, si vous débutez en ActionScript 3, vous avez peut-être éprouvé des difficultés à vider un chargeur de son contenu, d’une part, mais surtout à interrompre l’audio d’un fichier vidéo ou d’une musique, que la rubrique chargée pouvait contenir. Lorsque vous supprimez de la liste d’affichage (removeChild) un chargeur, vous ne supprimez pas son contenu comme nous le faisions en AS2 – avec unloadMovie() –, vous le « désaffichez ». Pour contourner cette difficulté, quatre solutions sont désormais disponibles : • Vous pouvez interrompre le contenu d’un chargeur depuis le SWF qui a appelé le contenu avec une série d’instructions compatibles Flash 9. • Vous pouvez procéder à la même manipulation avec une simple et unique instruction compatible Flash 10. • Vous pouvez décharger et interrompre le SWF appelé depuis le SWF lui-même, avec des instructions compatibles Flash 9. • Vous pouvez décharger et interrompre le SWF appelé depuis le SWF lui-même, avec quelques instructions compatibles Flash 10. Dans cette section, nous abordons les quatre solutions pour interrompre les contenus. Mais nous détaillons également quelques notions chères aux anciens codeurs AS2, le ciblage des contenus imbriqués et l’accès aux contenus de la scène parente ou racine. Dans cet exemple, nous disposons d’un premier SWF qui en appelle un autre, lequel joue une vidéo. Nous avons placé, à l’intérieur de chaque document, un bouton Fermer qui permet, chacun dans son contexte respectif et individuellement, de supprimer le contenu chargé, et cela avec les deux syntaxes Flash 9 et Flash 10. Exemples > ch8_videoInteractive_9.fla et Exemples > ch8_videoInteractive_9b.fla Dans le document « ch8_videoInteractive_9.fla », sur la scène, un MovieClip nommé cible_mc sert de conteneur pour le SWF chargé. Au-dessus, un contour blanc représente l’espace qu’occupe le contenu de ce SWF une fois celui-ci importé (voir Figure 8.19). Dans la fenêtre de scénario, les symboles cible_mc et le bouton Fermer sont répartis distinctement vers les calques (voir Figure 8.20). Dans le second document, nommé « ch8_videoInteractive_9b.fla », la scène affiche seulement un composant et un bouton de fermeture, localisé (voir Figure 8.21). Dans la fenêtre de scénario du document chargé, le composant et le bouton fermer sont également répartis vers les calques (voir Figure 8.22). La structure des deux documents permet de décharger et stopper les contenus aussi bien depuis le document racine que depuis le document appelé.

Arrêt et fermeture depuis le document racine

Dans le calque actions du document racine (« ch8_videoInteractive_9.fla »), celui qui appelle l’autre, nous lisons le code suivant : //———————- chargement var chemin:URLRequest = new URLRequest(« ch8_VideoInteractive_9b.swf »); var chargeur:Loader = new Loader(); chargeur.load(chemin); chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, afficher); function afficher(Evt:Event){ cible_mc.addChild(chargeur); } //———————- fermer depuis l’accueil fermerDepuisAccueil_btn.addEventListener(MouseEvent.CLICK,fermerSWF); function fermerSWF (evt:MouseEvent) { /* //Méthode avant Flash 10 MovieClip(chargeur.content).ecranVideo.stop(); chargeur.unload(); */ chargeur.unloadAndStop(); } Dans ce code, la première étape consiste à charger le second document SWF qui exécute la vidéo. Pour cela, nous définissions un nouveau chargeur, lequel exécute l’affichage du contenu une fois celui-ci chargé (voir Chapitre 5 pour le détail de ces instructions) : //———————- chargement var chemin:URLRequest = new URLRequest(« ch8_VideoInteractive_9b.swf »); var chargeur:Loader = new Loader(); chargeur.load(chemin); chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, afficher); function afficher(Evt:Event){ cible_mc.addChild(chargeur); } Plus loin, nous ajoutons un écouteur sur le bouton nommé fermer_btn. Dans la fonction appelée par l’écouteur, nous distinguons deux types d’instructions. La première laissée en commentaire pour ne pas doubler celle qui est restée active, est compatible Flash 9 : MovieClip(chargeur.content).ecranVideo.stop(); chargeur.unload(); Si nous nous contentions de purger le chargeur, le contenu serait bien ôté de l’interface, mais le flux ne serait pas stoppé, un peu comme si le robinet continuait à déverser de l’eau alors que l’on ait retiré le sceau. Le son et l’image continuent de se lire. Cette commande consiste donc, dans un premier temps, à interrompre tout ce qui est exécuté. En l’occurrence, la vidéo. Puis, sur la deuxième ligne, à purger le chargeur. Pour cibler plus spécifiquement le contenu chargé dans un SWF, nous devons d’abord faire référence au chargeur que nous avons utilisé pour importer le contenu. Plus précisément, nous devons faire référence à ce qu’il contient, et non à l’enveloppe qu’il représente. Nous spécifions donc, en plus de reprendre son nom (chargeur), que nous ciblons son contenu (chargeur.content). Ensuite, la référence au contenu du chargeur est passée en paramètre d’une méthode de transtypage en MovieClip. Et la deuxième ligne, une fois la vidéo arrêtée, purge le chargeur de son contenu.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *