Arrays 数组的值在函数外未定义

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

我刚开始学习AS3和Flash,我有一个问题。 正如您在下面的代码中所看到的,我已经用从XML文件获得的对象创建了一个数组。在我的函数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

这是因为xml加载是一个异步操作,但代码不是。这意味着首先开始加载xml,然后在最后一行代码中立即尝试跟踪值。但是您的xml仍然没有加载。然后,在某个时刻,xml被加载,XMLread被执行,因此那里的跟踪将打印现在填充的数组。

感谢您的回答,Andrey!你对我如何解决这个问题有什么建议吗?你只需要等待函数加载。然后开始您正在做的任何事情。例如,将您的最终跟踪放在initialize函数中,该函数将在XMLread中调用。然后,您需要的所有内容都将从initialize调用。。它被称为初始化流-一个函数启动一切。