views:

353

answers:

2

I have the following function, but I can't seem to get the myVar variable into the inline function. What am I doing wrong here? What I would like to have happen is when I click on myMc, it should print myVar to the console ("hello computer").

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

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

ps. - I cannot declare myVar as a global or static variable because in the real code, I'm parsing XML and the myVar is constantly changing.

+1  A: 

This is a scope issue - when you apply an onRelease function like this in as2, the scope of the function is the MovieClip you apply the function to, not the calling function.

Because you are using AS2 and MovieClip is dynamic, you can assign the variable to the MC directly:

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

    myMc.onRelease = function(){
        trace(this.myVar);
    }
}
Reuben
Thank you! That worked great. It's so straight forward, yet AS is very new to me to so these are great little lessons.
justinl
No problem. If AS is new to you maybe you should start with AS3 :)
Reuben
A: 

Try declaring myVar with the var keyword:

var myVar = "hello computer";
a paid nerd

related questions