【问题标题】:ActionScript: How to Import XML data as a variable (not as an Event)ActionScript:如何将 XML 数据作为变量(而不是事件)导入
【发布时间】:2010-10-03 00:41:51
【问题描述】:

我正在尝试将一些简单的 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)”,我想在函数之外跟踪它,以便稍后在我的脚本中访问它。我可以在函数内追踪,但这对我没有好处。我还可以让动态文本出现在舞台上,但同样,这对我没什么好处。

感谢任何帮助或见解。

【问题讨论】:

  • 请花几分钟时间了解如何格式化您的帖子,这样其他人就不必代表您这样做了。 stackoverflow.com/editing-help
  • 好吧,我试过了,但你只是覆盖了它们。 Grr.
  • 对不起...首先学习如何发布代码。我想我现在想通了。 ...而且它现在的格式都非常漂亮。
  • 对不起...首先学习如何发布代码。我想我现在想通了。 ...而且它现在的格式都非常漂亮。

标签: actionscript-3


【解决方案1】:

我可以看到几种方法来实现这一点,如果你想创建一个全局可访问的对象,创建一个单例(不推荐),将你的 XML 数据加载到其中,然后你的应用程序中的每个对象都可以访问已加载 XML 数据。
http://www.gskinner.com/blog/archives/2006/07/as3_singletons.html

生成的代码会给你这样的东西:

//在加载和解析 XML 后,在整个应用程序中可用 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/

//在特定的类中 私人变量_dormWater:字符串; 私有函数信号监听器(值:对象):无效 { _dormWater = value.dormWater; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2015-12-31
    • 2020-07-04
    相关资源
    最近更新 更多