ActionScript:如何将XML数据作为变量导入(而不是作为事件)

时间:2010-10-03 00:41:52

标签: actionscript-3

我正在尝试将一些简单的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)'我想在函数外部跟踪它,以便稍后在我的脚本中访问它。我可以追溯到这个功能,但这对我没有好处。我也能够将动态文本显示在舞台上,但同样地,这对我没什么用。

我感谢任何帮助或见解。

1 个答案:

答案 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;
}