我的数组的值在我的函数之外是未定义的

时间:2015-07-08 11:54:06

标签: arrays function actionscript-3

我刚刚开始学习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

1 个答案:

答案 0 :(得分:0)

这是因为xml加载是异步操作,但代码不是。这意味着首先你开始来加载xml,然后在它之后(在最后一行代码中),你试着追踪这个值。 您的xml仍然未加载。然后,在某些时候,xml被加载,并执行XMLread,因此跟踪打印出现在填充的数组。