raph37 Posted February 24, 2011 Share Posted February 24, 2011 (edited) Bonjour a tous ! Je me permet de venir m'éclairer de vos lumières . Pour commencer je vais vous expliquer ce que je veux réaliser . Je tente de faire un programme flash AS3 qui me permet de charger des images a partir d'un fichier XML, et de redimensionner et placer celles ci de manière homogène sur ma scene . J'utilise une fonction de type Event:Complete pour charger mon ficher XML . Par la suite, dans cette fonction j'appelle une autre fonction du meme type pour charger mes images . Le problème se trouve a ce moment là , je n'arrive pas a récupérer les variables de la fonction "parente" . Explication par la code : import flash.events.Event;stop();var Hauteur:Number = 90 ;var Largeur:Number = 90 ;var option_url:String = loaderInfo.parameters.option ; // récupère l'url du fichier XML par la variable placé dans le code HTMLvar loader_XML:URLLoader = new URLLoader(); // créé un nouveau loader URLloader_XML.addEventListener(Event.COMPLETE,LOAD_BIBLIO_COMPLETE); // Ecoute d'un évènement COMPLETE par le loaderloader_XML.load(new URLRequest(option_url))// Chargement d'un fichier dans le loader par une URL function LOAD_BIBLIO_COMPLETE(charge_bib:Event):void // Fonction evenementiel utilisé lors d'un retour COMPLETE { charge_bib.target.removeEventListener(Event.COMPLETE, LOAD_BIBLIO_COMPLETE ); // Suppression de l'écouteur var xml:XML = new XML(charge_bib.target.data); // variable XML = charge le type xml du fichier renvoyé par loader_XML for(var i=0;i < xml.image.length(); i++) // boucle listant tout le contenu des balise contenu dans le fichier XML { CREATE_IMG(xml.image[i].cible,i); // Appel la fonction qui créé un nouveau loader (d'image) }}function LOAD_IMG_COMPLETE(charge_img:Event):void // Fonction evenementiel utilisé lors d'un retour COMPLETE { charge_img.target.removeEventListener(Event.COMPLETE, LOAD_IMG_COMPLETE );// suppression de l'écouteur charge_img.target.width=Largeur; // (edit...) charge_img.target.height=Hauteur; // (edit...) // ICI j'aimerai charger la variable $i de la fonction parente.}var CREATE_IMG = function($src:String,$i:Number) // création d'une fonction permetant la création d'un nouveau loader{ var loader_IMG:Loader = new Loader (); loader_IMG.contentLoaderInfo.addEventListener(Event.COMPLETE,LOAD_IMG_COMPLETE); // Ecoute si l'image est chargé completement loader_IMG.load(new URLRequest($src))// créé une requette URL vers le fichier listé loader_IMG.name="Num"+$i;} Je ne sais pas si je suis bien claire et si mon code est "propre" lol . En tous cas , j'espère que ce sera assez compréhensible et que vous pourrez m'aider a mieux comprendre AS3 . si quelqu'un a une meilleur méthode et plus simple , je suis preneur . Merci beaucoup Edited February 24, 2011 by raph37 Link to comment Share on other sites More sharing options...
raph37 Posted February 25, 2011 Author Share Posted February 25, 2011 (edited) J'ai trouvé une façon d'arriver à mes fins et aussi j'ai simplifié le code . ce script n'affiche pas les images dans l'ordre du fichier xml , mais du fichier (image) chargé du plus vite au moins vite. Il redimensionne et place les image a égale distance . Si vous trouvez que mon code est nulle ou que mes commentaires sont a coté de la plaque, n'hésitez pas a me le dire ou a m'aider a le modifier merci . la prochaine étape sera d'afficher les images dans l'ordre du fichier xml import flash.events.Event;stop();var Hauteur:Number = 100 ;var Largeur:Number = 100 ;var espace:Number = 10 ;var distance:Number = 0 ;var option_url:String = loaderInfo.parameters.option ; // récupère l'url du fichier XML par la variable placé dans le code HTMLvar loader_XML:URLLoader = new URLLoader(); // créé un nouveau loader URLloader_XML.addEventListener(Event.COMPLETE,LOAD_BIBLIO_COMPLETE); // Ecoute d'un évènement COMPLETE par le loaderloader_XML.load(new URLRequest(option_url))// Chargement d'un fichier dans le loader par une URL var str_replace = function(original:String,old:String,now:String):String{return (original.split(old)).join(now);}function LOAD_BIBLIO_COMPLETE(charge_bib:Event):void // Fonction evenementiel utilisé lors d'un retour COMPLETE { charge_bib.target.removeEventListener(Event.COMPLETE, LOAD_BIBLIO_COMPLETE ); // Suppression de l'écouteur var xml:XML = new XML(charge_bib.target.data); // variable XML = charge le type xml du fichier renvoyé par loader_XML for(var i=0;i < xml.image.length(); i++) // boucle listant tout le contenu des balise contenu dans le fichier XML { var loader_IMG:Loader = new Loader (); loader_IMG.name="Num"+i; loader_IMG.contentLoaderInfo.addEventListener(Event.COMPLETE,LOAD_IMG_COMPLETE); // Ecoute si l'image est chargé completement loader_IMG.load(new URLRequest(xml.image[i].cible))// créé une requette URL vers le fichier listé }}function LOAD_IMG_COMPLETE(charge_img:Event):void // Fonction evenementiel utilisé lors d'un retour COMPLETE { charge_img.target.removeEventListener(Event.COMPLETE, LOAD_IMG_COMPLETE );// suppression de l'écouteur var $i:Number = str_replace(charge_img.target.loader.name,"Num",""); // retrouve le numéro de l'image par une fonction str_replace var proportion:Number = charge_img.target.height / Hauteur; // variable du facteur proportionnel var Largeur:Number = charge_img.target.loader.width / proportion; // variable de la largeur proportionnel charge_img.target.content.width=Largeur; // redimensionnement de la largeur du loader charge_img.target.content.height=Hauteur; // redimensionnement de la hauteur du loader addChild(charge_img.target.loader); // ajoute le loader sur la scène charge_img.target.loader.content.x=distance; // placement du loader sur l'axe x = a la variable distance qui s'implémente a chaque images distance = distance + espace + Largeur; // la variable distance additionne sa valeur précédente avec l'espace et la largeur pour placer la prochaine image plus loin. } Edited February 25, 2011 by raph37 Link to comment Share on other sites More sharing options...
raph37 Posted February 25, 2011 Author Share Posted February 25, 2011 Bon ok je suis un boulet ! surtout que c'est les bases ... il suffisait de la déclarer a l'extérieur des fonctions , ainsi la valeur peut être récupérée de n'importe ou ... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now