我刚刚开始学习AS3和Flash,我有一个问题。 正如您在下面的代码中看到的,我已经从XML文件中创建了一个从对象中获取的数组。在我的功能和#34; XMLread"我没有问题跟踪,或使用数组的值或什么如此。我的问题是我想在函数" XMLread"之外使用数组。而不仅仅是在...每当我尝试访问" monthParams"的值时在函数之外,它表示数组是"未定义"。我如何使用我创建的数组?
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
答案 0 :(得分:0)
这是因为xml加载是异步操作,但代码不是。这意味着首先你开始来加载xml,然后在它之后(在最后一行代码中),你试着追踪这个值。 但您的xml仍然未加载。然后,在某些时候,xml被加载,并执行XMLread
,因此跟踪打印出现在填充的数组。