Reno007
Messages postés2Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention24 août 2006
-
14 août 2006 à 16:01
fguitton
Messages postés396Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention13 novembre 2009
-
15 août 2006 à 13:47
Bonjour à tous.
Je désire pouvoir avoir accès au contenu de ma variable "contenuXMLFichier" en dehors de la fonction onLoad et j avais trouvé un code sensé résoudre mon problème. Hélas ca ne marche pas, voici mon code:
import mx.utils.Delegate;
class XMLContentLoader
{
public var contenuXMLFichier:Array = new Array();
public var nbPhotos:Number;
private var xml:XML;
function XMLContentLoader([String url:String])
{
xml = new XML();
xml.ignoreWhite = true;
xml.onLoad = Delegate.create(this, onLoadEvent);
xml.load(url);
}
function onLoadEvent(success:Boolean):Void
{
if(success)
{
nbPhotos = xml.firstChild.childNodes.length;//récupérer le nombre de photos
for(var i:Number=0; i<nbPhotos; i++)
{
contenuXMLFichier[i]=xml.firstChild.childNodes[i].attributes.fichier;
}
}
trace(contenuXMLFichier[0]); //Affiche correctement le nom de mon 1er fichier
}
}
var espace:Number = 10;
var photoX:Number = espace;
var photoY:Number = espace;
var xmlCL:XMLContentLoader = new XMLContentLoader("../xml/sanguines.xml");
trace(xmlCL.contenuXMLFichier[0]); //Affiche undefined
Voila, l'utilisation de "Delegate" était sensé résoudre mon problème mais ca ne marche toujours pas, quelqu'un aurait-il une solution ?
Merci.
atchoumdu51
Messages postés194Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention16 juillet 20071 14 août 2006 à 23:08
Bonjour
Ce n'est que mon avis mais il faudrait que tu attendes que ton Xml soit chargé. Car tu essaye de faire un trace alors que ton Xml est encore en cours de chargement. Pour cela il faudrait voir si le "undefined" arrive avant la valeur correcte, si c'est le cas alors il faut que tu attendes avant de vouloir utiliser la variable
fguitton
Messages postés396Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention13 novembre 20091 15 août 2006 à 13:47
Ce n'est peu être que ton avis
atchoumdu51 . Mais c'est exactement le problème !
atchoumdu51 a tout à raison sur ce point !
Par contre je vais complèter en disant que la class Delegate permet d'exécuter une fonction dans un domaine spécifique, or si ton domain est this il se reporte a l'élément actuel. Donc en gros tous ca ca sert à rien à part à charger ton code pour rien. Si tu déclare ton tableau contenuXMLFichier à la racine du code et que tu le complète via une fonction les information du tableau sont accessible de n'importe quel endroit de l'animation.
De cause à effet voir la réponse de
atchoumdu51 .