cs_nuns
Messages postés87Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention23 juillet 2009
-
21 juil. 2009 à 11:54
cs_nuns
Messages postés87Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention23 juillet 2009
-
23 juil. 2009 à 12:27
Bonjour,
J'essaie de faire une classe pour charger un fichier xml, qui comporte juste le chemin des images sur le serveur.
La lecture ce fait correctement, mais le problème est quand je veux récupérer le tableau avec ma liste d'images.
Par exemple avec la fonction "getItems" la liste d'image est vide.
Could you help me ? please.
Meilleurs salutation.
package {
import flash.net.URLLoader;
import flash.utils.Timer;
import flash.xml.XMLDocument;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.URLRequest;
public class ChargeXML {
protected var items : Array;
protected var loader : URLLoader;
protected var xml : XMLDocument;
protected var t:Timer = new Timer(5000);
public function ChargeXML(str : String) : void {
//craete teh urlloader object
this.loader = new URLLoader();
this.items = new Array();
//craete a new flash.xml xmlDocuments object
this.xml = new XMLDocument();
//ignore the white spaces in the file
xml.ignoreWhite = true;
//set the loaders listener function that gets the event when the xml is loaded
this.loader.addEventListener(Event.COMPLETE, XMLloaded);
this.loader.addEventListener(ProgressEvent.PROGRESS, avancement);
//load the xml file from it's location
this.loader.load(new URLRequest(str));
trace(" Constructeur :" + this.items);
}
private function avancement(e:Event):void {
trace(e.target.bytesLoaded + " / " + e.target.bytesTotal);
}
private function XMLloaded(e:Event):void {
//parse the content and create a xml structure in the xmlDoscument
this.xml.parseXML(loader.data);
//firstchild represents first node, childNodes represent the nodes in the firstChild
for(var i:int = 0; i < xml.firstChild.childNodes.length; i++){
var o:Object = xml.firstChild.childNodes[i].attributes;
//pushing the item to the items array holding the mobiles
this.items.push(o.image);
}
trace(" XMLloaded :" + this.items);
}
public function getItems():Array {
trace(" getItems :" + this.items);
return this.items;
}
}
}
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 21 juil. 2009 à 16:17
Salut,
1- a quoi ressemble la structure du xml contenu dans le fichier?
2- a part quelques lignes de codes que tu devrais p-e modifier ou rajouter, la logique est juste.
3- je ne vois en aucun endroit un appel a la fonction getItems(), qui pourtant est bien ecrite.
montre nous en plus si tu veux bien.
Bonne continuation.
cs_nuns
Messages postés87Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention23 juillet 2009 21 juil. 2009 à 17:03
Salut,
Imaginons dans mon main.
//code de main exemple.
trace("before create object");
var items : ChargeXML = new ChargeXML('images.xml');
trace("after create object");
trace(items.getItems());
ce que je reçois dans la fenêtre système.
Avant Creat object
Constructeur :
apres Create object
getItems :
259 / 259
XMLloaded :imgs/1.jpg,imgs/2.jpg,imgs/3.jpg,imgs/4.jpg,imgs/5.jpg
J'arrive à lire le contenu de mon xml. Ce que je ne comprends pas c'est pourquoi ma fonction "getItems" est exécuté avant le tracer qui ce trouve dans la fonction "XMLloaded"
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 22 juil. 2009 à 17:20
Salut,
C'est parce le chargement du fichier xml est fait de maniere asynchrone. Ce qui veut ire que flash initie le chargement du fichier et le confie a un thread, en attendant que le fichier soit charge (et que ta fonction soit notifiee) , il execute les autres lignes de codes. Voila pkoi ton tableau est vide lorsque ta fonctions est appelee : parce que ton fichier n'est pas encore charge et traite.
Bonne continuation.
http://liveplayaz.com je suis heureux de faire partie d'une grande famille ...!
Vous n’avez pas trouvé la réponse que vous recherchez ?
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 23 juil. 2009 à 00:31
Salut,
tu as deja implemente la solution toi-meme: la fonction XMLloaded, qui est appelee lors du chargement complet du fichier. Tu peux recommencer une sequence d'actions synchrones a partir de la.