AS3使用另一个函数中的变量 - 不工作

时间:2012-02-27 08:49:54

标签: actionscript-3

似乎无法在函数外部获取myXML的值,尽管在外部声明。我在这里错过了什么?数据在函数内正确加载和跟踪。

var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("flightPlannerBoard.xml"));

var myXML:XML;

// Check XML data fully loaded
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {

myXML = new XML(e.target.data);
//trace(myXML);
}
trace(myXML);

3 个答案:

答案 0 :(得分:1)

由于ActionScript与其他人所说的不同,因此您无法通过代码放置来控制执行流程。您必须做的是通过事件控制执行,因此您要对加载的XML执行的任何操作都应该在processXML函数或从processXML调用的另一个函数中:

var myXML:XML;

function processXML(e:Event):void {
    myXML = new XML(e.target.data);
    trace(myXML);  //this trace will work
    doNextAction();
}

function doNextAction():void {
    trace(myXML);  //this trace will also work
}

答案 1 :(得分:0)

您应该在函数外部声明XML变量,以便能够在另一个函数中使用它

private var myXML:XML;

答案 2 :(得分:0)

Actionscript是一种异步语言,意味着在文件加载之前将调用回调“外部”的跟踪。您的案例中的执行顺序是:

  1. 创建URLLoader的实例
  2. 开始加载文件
  3. 添加事件侦听器以侦听完整事件
  4. 追踪myXML
  5. (或稍后某点)完成加载xml文件