2009-11-11 8 views
2

J'ai la fonction suivante, mais je n'arrive pas à obtenir la variable myVar dans la fonction inline. Qu'est-ce que je fais mal ici? Ce que je voudrais avoir, c'est quand je clique sur myMc, il devrait imprimer myVar à la console ("bonjour l'ordinateur").Comment passer des variables dans des fonctions inline dans Action Script 2

 
function doSomething():Void 
{ 
    myVar = "hello computer"; 

    myMc.onRelease = function(){ 
     trace(myVar); //prints as "undefined" 
    } 
} 

ps. - Je ne peux pas déclarer myVar comme variable globale ou statique car dans le code réel, j'analyse XML et le myVar change constamment.

Répondre

3

Il s'agit d'un problème de portée - lorsque vous appliquez une fonction onRelease comme dans as2, la portée de la fonction est le MovieClip auquel vous appliquez la fonction, pas la fonction appelante.

Parce que vous utilisez AS2 et MovieClip est dynamique, vous pouvez assigner la variable à la MC directement:

function doSomething():Void 
{ 
    myMc.myVar = "hello computer"; 

    myMc.onRelease = function(){ 
     trace(this.myVar); 
    } 
} 
+0

Merci! Cela a bien fonctionné. C'est tellement simple, mais AS est très nouveau pour moi, donc ce sont de bonnes petites leçons. – justinl

+0

Pas de problème. Si AS est nouveau pour vous, vous devriez peut-être commencer par AS3 :) – Reuben

0

Essayez déclarant myVar avec le mot-clé var:

var myVar = "hello computer"; 
Questions connexes