开发者

ActionScript: How to Import XML data as a variable (not as an Event)

I am attempting to import some simple XML data into Flash ActionSc开发者_JAVA百科ript 3.0. I can easily do this as an import that is posted to the stage, but I want to save it as a global variable instead. Here is the XML file that I am pulling from:

<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>

...and here is the actionscript:

    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);

Notice the 'trace (dormWater)' I want to trace this outside of the function so it is accessible in later in my script. I can trace within the function, but this does me no good. I also am able to get the dynamic text to show up on the stage but, likewise, this does me little good.

I appreciate any help or insights.


I can see a couple of ways of achieving this , if you want to create a globally accessible Object, create a Singleton( not recommended ) , load your XML data into it then every object in your app will be able to access the loaded XML data.
http://www.gskinner.com/blog/archives/2006/07/as3_singletons.html

The resulting code would give you something like this:

//Available throughout your app after the XML has been loaded & parsed
var dormWater:String = Singleton.dormWater;

Although you state you don't want Events, I think that using Signals could be a better approach. Load your XML and dispatch a Signal containing the relevant String to the object that needs it, when receiving the Signal , assign the String to a variable.
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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜