功能和变量

时间:2009-12-12 15:33:46

标签: actionscript-3 variables

问题很简单,但我无法弄明白。

例如我有字符串变量ts。我的加载器在movieclip实例中加载图像后,我想将ts值更改为某些内容。问题是 - 我的doneLoad函数没有改变ts值。这是代码

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"

有什么问题?

1 个答案:

答案 0 :(得分:1)

您的问题是trace(ds)在函数doneLoad运行之前被调用。

doneLoad是一个回调函数,直到ofater完成后才会运行。您对trace(ds)的调用不在回调范围内,因此一旦应用程序启动(或其余代码运行),就会立即运行。因此,当调用trace时......值仍然是“正在加载”。

将您的代码更改为:

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);
}