2009-10-14 7 views
0

Je peux obtenir les données XML de la 3ème fonction?Obtention de données XML à partir de la 3ème fonction?

package { 
import flash.display.*; 
import flash.events.*; 
import flash.net.*; 

public class main extends MovieClip { 
    private var myXML:XML; 
    private var myXMLlist:XMLList; 
    private var myLoader:URLLoader = new URLLoader(); 

    public function main():void { 
     loadData(); 
     3rdfunction(); 
    } 

    private function loadData():void { 
     myLoader.load(new URLRequest("data.xml")); 
     myLoader.addEventListener(Event.COMPLETE, processXML); 
    } 
    private function processXML(e:Event):void { 
     myXML=new XML(e.target.data); 
     trace(myXML.length()) 
    } 


    private function 3rdfunction():void { 

     trace(myXML); 

}

Répondre

2

Il faudra un certain temps à la fonction loadData() pour charger le fichier XML, puis mettre ces données dans myXML. Mais 3rdfunction() est exécuté immédiatement après loadData(), ce qui signifie qu'il n'y aura pas eu assez de temps pour que myXML soit chargé lorsque vous essayez de le tracer.

Pour résoudre ce problème, vous pouvez déplacer le 3rdfunction() pour processXML():

public class main extends MovieClip { 
    private var myXML:XML; 
    private var myXMLlist:XMLList; 
    private var myLoader:URLLoader = new URLLoader(); 

    public function main():void { 
      loadData(); 
    } 

    private function loadData():void { 
      myLoader.load(new URLRequest("data.xml")); 
      myLoader.addEventListener(Event.COMPLETE, processXML); 
    } 
    private function processXML(e:Event):void { 
      myXML=new XML(e.target.data); 
      trace(myXML.length()) 
      3rdfunction(); 
    } 


    private function 3rdfunction():void { 

      trace(myXML); 

De cette façon, 3rdfunction() ne sera courir après data.xml a été chargé dans votre objet myXML, donc myXML devrait certainement contenir quelque chose.

+0

ah droit ..... stupide moi XD merci! – Hwang

+0

vous êtes les bienvenus :) – MichaelJW

0

Si vous voulez juste suivre le contenu de myXML, essayez:

trace(myXML.toXMLString()); 

Ou avez-vous voulu faire plus avec les données, comme analysez réellement avec le code?

+0

bien techniquement je dois pouvoir le tracer avant que je puisse faire n'importe quoi d'autre avec lui juste? – Hwang

+0

Ah, je crois que j'ai mal interprété votre question. Demandez-vous pourquoi 3rdfunction() ne trace encore rien? – MichaelJW

+0

yup. Une idée de comment surmonter le problème? – Hwang

Questions connexes