2009-12-12 13 views
0

Eh bien, la question est assez simple, mais je ne peux pas comprendre.fonctions et variables

Par exemple j'ai une chaîne de caractères ts. Après que mon chargeur charge l'image dans l'occurrence de movieclip je veux changer la valeur de ts à quelque chose. Le problème est que la valeur de ts ne change pas sur ma fonction doneLoad. Voici le code

var ts:String = "loading"; 

var imgload = new Loader(); 

imgload.load(new URLRequest("http://images.op.com/cards/up1x3941204.jpg")); 

imgload.contentLoaderInfo.addEventListener(Event.COMPLETE,doneLoad); 

function doneLoad(e:Event):void { 
ts = "done"; 
} 

trace(ts); // returns "loading" 

Quel est le problème?

+0

les lignes de Indentation votre question qui sont le code de quatre espaces et il en sera de les mettre en évidence de façon appropriée. – ctford

Répondre

1

Votre problème est que trace(ds) est appelée avant que la fonction doneLoad ne soit exécutée. DoneLoad est une fonction de rappel et ne s'exécute pas avant la fin du chargement du chargeur. Votre appel à la trace (ds) est en dehors du rappel et, par conséquent, s'exécute dès que l'application démarre (ou chaque fois que le reste du code s'exécute). Par conséquent, lorsque la trace est appelée ... la valeur est toujours "en cours de chargement".

Changer votre code:

var ts:String = "loading"; 
var imgUpload:Loader = new Loader(); 

imgload.load(new URLRequest("http://images.op.com/cards/up1x3941204.jpg")); 
imgload.contentLoaderInfo.addEventListener(Event.COMPLETE,doneLoad); 

function doneLoad(e:Event):void 
{ 
    ts = "done"; 
    trace(ds); 
} 
+0

OMG, et si je veux utiliser la valeur variable modifiée ailleurs? Fonction d'événement extérieur? – Vlad

+0

Tant que le code en dehors des fonctions d'événement s'exécute après la fonction d'événement ... vous aurez la nouvelle valeur. –

+0

En fait, il va après la fonction d'événement (voir le code en question) mais la valeur reste ancienne. Et (ne peut pas le mettre dans mon esprit - de cette façon de, uhm, travaillant avec des variables me confondant) code après que la fonction d'événement sera exécutée avant que la fonction d'événement ait fait son travail. Que faire avec ce problème? – Vlad

Questions connexes