Problème d'undefined

Signaler
Messages postés
2
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
24 août 2006
-
Messages postés
396
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 novembre 2009
-
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
 }
}

Et Dans mon .fla :

System.useCodepage = true;
import XMLContentLoader.*;


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.

Renaud

2 réponses

Messages postés
194
Date d'inscription
jeudi 1 janvier 2004
Statut
Membre
Dernière intervention
16 juillet 2007
1
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
Messages postés
396
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 novembre 2009

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
.

Aller @+
Flo