Arrays 数组的值在函数外未定义
我刚开始学习AS3和Flash,我有一个问题。 正如您在下面的代码中所看到的,我已经用从XML文件获得的对象创建了一个数组。在我的函数XMLread中,跟踪、使用数组的值或其他任何东西都没有问题。我的问题是,我想在函数XMLread之外使用数组,而不仅仅是在函数中。每当我试图访问函数外部的monthParams值时,它都会说数组未定义。如何使用我创建的数组Arrays 数组的值在函数外未定义,arrays,function,actionscript-3,Arrays,Function,Actionscript 3,我刚开始学习AS3和Flash,我有一个问题。 正如您在下面的代码中所看到的,我已经用从XML文件获得的对象创建了一个数组。在我的函数XMLread中,跟踪、使用数组的值或其他任何东西都没有问题。我的问题是,我想在函数XMLread之外使用数组,而不仅仅是在函数中。每当我试图访问函数外部的monthParams值时,它都会说数组未定义。如何使用我创建的数组 import flash.display.Loader; import flash.net.URLRequest; import flash
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.DataEvent;
var monthParams= new Array;
var month= new Object();
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("Parameter.xml"));
myLoader.addEventListener(Event.COMPLETE, XMLread);
var actualMonth= 0;
function XMLread(e:Event){
var myXML:XML=new XML(e.target.data);
myXML.ignoreWhitespace=true;
for (var xmli:int=0; xmli < myXML.monat.length(); xmli++) {
month.number=myXML.month[xmli].number.text();
month.namen=myXML.month[xmli].namen.text();
month.mid=myXML.month[xmli].mid.text();
month.devi=myXML.month[xmli].devi.text();
month.incli=myXML.month[xmli].incli.text();
month.korr=myXML.month[xmli].korr.text();
monthParams.push(month);
}
trace (monthParams[actualMonth].mid); // works fine
}
trace (monthParams[actualMonth].mid); // doesn't work
这是因为xml加载是一个异步操作,但代码不是。这意味着首先开始加载xml,然后在最后一行代码中立即尝试跟踪值。但是您的xml仍然没有加载。然后,在某个时刻,xml被加载,XMLread被执行,因此那里的跟踪将打印现在填充的数组。感谢您的回答,Andrey!你对我如何解决这个问题有什么建议吗?你只需要等待函数加载。然后开始您正在做的任何事情。例如,将您的最终跟踪放在initialize函数中,该函数将在XMLread中调用。然后,您需要的所有内容都将从initialize调用。。它被称为初始化流-一个函数启动一切。