Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将xml数据保存到AS3变量/onComplete中_Xml_Variables_Actionscript 3_Actionscript - Fatal编程技术网

将xml数据保存到AS3变量/onComplete中

将xml数据保存到AS3变量/onComplete中,xml,variables,actionscript-3,actionscript,Xml,Variables,Actionscript 3,Actionscript,我是AS3的新手。希望将从xml文件加载的数据保存到变量中。然后稍后调用该变量 这是我的密码: package { import flash.display.MovieClip; import flash.events.*; import flash.display.Stage; import flash.text.TextField; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRe

我是AS3的新手。希望将从xml文件加载的数据保存到变量中。然后稍后调用该变量

这是我的密码:

package {

import flash.display.MovieClip;
import flash.events.*;
import flash.display.Stage;
import flash.text.TextField;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLLoaderDataFormat;
import flash.net.URLVariables;

public class myClass extends MovieClip {
        public static var objectOneTotal:int = 1;
        public static var objectOneCurrent:int = 1;


    public function myClass() {


        var myXML:XML;
        var myLoader:URLLoader = new URLLoader();
        myLoader.load(new URLRequest("beers.xml"));
        myLoader.addEventListener(Event.COMPLETE, processXML);

            function processXML(event:Event):void {
            myXML = new XML(event.target.data);

            myClass.objectOneCurrent = int(myXML.current);
            myClass.objectOneTotal = int(myXML.total);

            trace(myClass.objectOneCurrent);
            trace(myClass.objectOneTotal);

            }

        trace(myClass.objectOneCurrent);
        trace(myClass.objectOneTotal);
        var objectOneStart:int = objectOne.x;
        objectOne.x = (objectOneCurrent / objectOneTotal)  * (finish.x - objectOneStart);

    }

}

}
它的作用:当我运行它时,查看跟踪,它跟踪对象的初始值“1”,然后跟踪从xml加载的值。因此,我相信它正在加载数据,但程序只在代码的其余部分之后运行processXML函数。或者别的什么

我不是很确定。但是我需要最后两个跟踪来读取xml数据


谢谢

因为AS3是异步的,所以它将在加载XML之前执行整个
MyClass
方法。加载XML时,将执行
processXML
中定义的代码来处理它

解决方法是使
processXML
句柄集
object1.x

package {

    import flash.display.MovieClip;
    import flash.events.*;
    import flash.display.Stage;
    import flash.text.TextField;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLVariables;

    public class myClass extends MovieClip {
            public static var objectOneTotal:int = 1;
            public static var objectOneCurrent:int = 1;


        public function myClass() {
            var myXML:XML;
            var myLoader:URLLoader = new URLLoader();
            myLoader.load(new URLRequest("beers.xml"));
            myLoader.addEventListener(Event.COMPLETE, processXML);

            // these will fire before the XML is loaded
            trace(myClass.objectOneCurrent);
            trace(myClass.objectOneTotal);


        }

        public function processXML(event:Event):void {
            myXML = new XML(event.target.data);

            myClass.objectOneCurrent = int(myXML.current);
            myClass.objectOneTotal = int(myXML.total);

            // these fire after the XML is loaded
            trace(myClass.objectOneCurrent);
            trace(myClass.objectOneTotal);

            var objectOneStart:int = objectOne.x;
            objectOne.x = (objectOneCurrent / objectOneTotal)  * (finish.x - objectOneStart);

        }
    }
}