将xml数据保存到AS3变量/onComplete中
我是AS3的新手。希望将从xml文件加载的数据保存到变量中。然后稍后调用该变量 这是我的密码:将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
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);
}
}
}