Galerie d'images XML/AS3 (problème de for each)
Bonjour,
je suis en train de construire une galerie d'images dont l'adresse est dans un fichier XML dont voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| package classes{
import flash.media.*;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.events.*;
import flash.utils.Timer;
import flash.text.*;
import fl.containers.UILoader;
import flash.display.Loader;
public class Diapo extends MovieClip {
private var monXML:XML;
private var uiload:UILoader = new UILoader();
private namespace xmlns="http://xspf.org/ns/0/";
private var images:Array = new Array();
private var img_tmb:imgTmb;
private var imageLoader:Loader;
public function Diapo(){
var chargeur:URLLoader = new URLLoader ();
var adresse:URLRequest = new URLRequest ("xml.xml");
chargeur.load(adresse);
chargeur.addEventListener(Event.COMPLETE, fichierXML);
}
public function fichierXML(evt:Event):void{
this.monXML = new XML(evt.target.data);
var i:Number =0;
use namespace xmlns;
for each(var menu:XML in this.monXML..page){
images[i]=(monXML..page[2].photo[i]);
i++;
}
for (var j= 0; j<images.length; j++) {
var url:String = "img/tmb/";
trace(images[j]);
imageLoader = new Loader();
imageLoader.load(new URLRequest(url+images[j]));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
img_tmba.y = 7;
img_tmba.x = j*80;
}
}
function imageLoaded(e:Event):void {
trace("a");
img_tmba.addChild(imageLoader);
}
}
} |
mon problème est qu'une seule image n'apparait au final.
grâce au trace(images[j]), j'ai pu voir que l'adresse des images était correcte.
J'ai fait un trace("a") dans la fonction imageLoaded et le programme rentre effectivement dans la fonction.
les 2 traces combinés rendent ca:
Citation:
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
a
a
a
a
a
Comme si le for each allait bien plus vite que l'autre fonction et "écrasait" son résultat à chaque fois. Il me faudrait donc un moyen de les faire marcher chacunes leur tour, est-ce possible?
merci
kevin