我正在尝试将一些简单的XML数据导入Flash ActionScript 3.0。我可以轻松地将此作为发布到舞台的导入,但我想将其另存为全局变量。这是我要提取的XML文件:
<utilitySavings>
<nameof file="academicWaterSavings">
<waterValue>100</waterValue>
<elecValue>200</elecValue>
</nameof>
<nameof file="dormWaterSavings">
<waterValue>300</waterValue>
<elecValue>400</elecValue>
</nameof>
<nameof file="greekWaterSavings">
<waterValue>500</waterValue>
<elecValue>600</elecValue>
</nameof>
<nameof file="totalWaterSavings">
<waterValue>1500</waterValue>
<elecValue>1600</elecValue>
</nameof>
......这是动作脚本:
var req:URLRequest = new URLRequest("data.xml");
var loader:URLLoader = new URLLoader();
var utilitySavings:XML;
function xmlLoaded(event:Event):void
{
utilitySavings = new XML(loader.data);
academicWater.text = utilitySavings.nameof[0].waterValue;
academicElec.text = utilitySavings.nameof[0].elecValue;
var dormWater:String = utilitySavings.nameof[1].waterValue;
trace (dormWater);
}
loader.addEventListener(Event.COMPLETE, xmlLoaded);
loader.load(req);
trace(academicWater.text);
注意'trace(dormWater)'我想在函数外部跟踪它,以便稍后在我的脚本中访问它。我可以追溯到这个功能,但这对我没有好处。我也能够将动态文本显示在舞台上,但同样地,这对我没什么用。
我感谢任何帮助或见解。
答案 0 :(得分:0)
我可以看到实现此目的的几种方法,如果您想创建一个全局可访问的对象,创建一个Singleton(不推荐),将XML数据加载到其中,那么您应用中的每个对象都将能够访问加载的XML数据 http://www.gskinner.com/blog/archives/2006/07/as3_singletons.html
结果代码会给你这样的东西:
//Available throughout your app after the XML has been loaded & parsed var dormWater:String = Singleton.dormWater;
虽然你声明你不想要事件,但我认为使用信号可能是更好的方法。加载XML并将包含相关String的Signal发送到需要它的对象,在接收Signal时,将String分配给变量。
http://www.peterelst.com/blog/2010/01/22/as3-signals-the-best-thing-since-sliced-bread/
//In a specific class private var _dormWater:String; private function signalListener(value:Object ):void { _dormWater = value.dormWater; }