2010-06-02 6 views
-2

je ne peux pas lire la variable dans la fonction, je veux l'utiliser en dehors de la fonction, voici mon code.je ne peux pas obtenir variable dans la fonction

var contentLoader: URLLoader = nouveau URLLoader(); contentLoader.load (new URLRequest ("http://localhost/data.php"));

fonction onComplete (event: Event): void {

var txtu: String = event.target.data;

} contentLoader.addEventListener (Event.COMPLETE, onComplete);

trace (txtu);

merci.

+0

Veuillez formater votre code correctement. –

Répondre

1

fondamentalement vous avez une variable qui est déclarée locale à la fonction actuellement. vous devrez déclarer la variable en dehors de la fonction, où votre variable contentLoader est définie, puis affecter la valeur dans la fonction.

+0

J'ai essayé cela aussi, mais ne fonctionne pas, voici le code à nouveau. var txtu: String; var contentLoader: URLLoader = new URLLoader(); contentLoader.load (new URLRequest ("http: //localhost/flash/playerdata.php")); fonction onComplete (event: Event): void { \t \t \t \t txtu = event.target.data; \t \t } contentLoader.addEventListener (Event.COMPLETE, onComplete); trace (txtu); si vous me montrer un exemple itz gentil, merci 4 la relecture. – kaym

+0

Êtes-vous sûr que les données sont renvoyées par l'urlloader? avez-vous essayé de suivre les données dans la fonction? aussi, essayez de lancer le event.target comme un chargeur d'url explicitement comme var loader: URLLoader = URLLoader (event.target); –

+0

oui je l'ai fait que j'ai retracé txtu à l'intérieur de la fonction et son fonctionnement, mais quand je l'appelle en dehors de la fonction son vide. – kaym

1

Le problème ici est que trace(txtu) est exécuté immédiatement après contentLoader.addEventListener(Event.COMPLETE, onComplete), ce qui signifie qu'il se produit avant le chargement terminé URLLoader. Donc, il n'y a rien à tracer dans cette situation car il n'a pas encore été chargé. Essayez d'appeler une autre fonction à la fin de onComplete(), ce qui garantira que les données externes sont entièrement chargées à ce moment-là.

Par exemple:

var contentLoader:URLLoader = new URLLoader(); 
contentLoader.load(new URLRequest("http://localhost/data.php")); 

function onComplete(event:Event):void 
{ 
    var txtu:String = event.target.data; 
    continueWithProgram(); 
} 

contentLoader.addEventListener(Event.COMPLETE, onComplete); 

function continueWithProgram():void 
{ 
    trace(txtu); 
} 
1

vous devriez être en mesure de résoudre le problème en soit passer le résultat dans une nouvelle méthode comme ceci:

var loaderResult: String; 

var contentLoader:URLLoader = new URLLoader(); 
    contentLoader.addEventListener(Event.COMPLETE, onComplete); 
    contentLoader.load(new URLRequest("http://localhost/data.php")); 


// #option 1 

function onComplete (event:Event): void { 
    var txtu:String = event.target.data; 
    continueWithProgram(txtu); 
} 

function continueWithProgram (value:String): void { 
    trace(txtu); 
} 

ou utiliser une variable en dehors de l'événement gestionnaire:

// #option 2 

var loaderResult: String; 

function onComplete (event:Event): void { 
    loaderResult = event.target.data; 
    continueWithProgram(); 
} 

function continueWithProgram(): void { 
    trace(loaderResult); 
} 

j'espère pouvoir faire la lumière ..;) ce qui concerne.

Questions connexes