2010-01-24 66 views
1

我有以下结构的XML:AS3读取XML,创建对象并将它们存储在一个阵列

<NODES>
<NODE>
<NAME> </NAME>
<IMG> </IMG>
</NODE>
<NODE>
<NAME> </NAME>
<IMG> </IMG>
</NODE>
</NODES>

和IM得到它到闪存为这样:

 var loader:URLLoader = new URLLoader(); 
     loader.addEventListener(Event.COMPLETE, loadNodes); 
     loader.load(new URLRequest("../resources/xml/nodes.xml")); 
     function loadNodes(e:Event):void 
     { 
      var NodesXml:XML = new XML(e.target.data); 
      trace(NodesXml); 
      //path: resources\xml\nodes.xml 
      } 

我想让每个节点变成“某些东西”,那就是我需要帮助。 我想将每个“NODE”都放到舞台上,所以我需要将所有属性(如名称和图像url)存储在某处。这是用对象完成的吗?

如果是这样,我必须以某种方式循环xml,并为每个NODE创建一个与“属性”的对象?我应该让他们进入数组?

我一直在寻找:

XmlNodeList NODEList = doc.GetElementsByTagName("NODE"); 

foreach (XmlNode NODE in NODEList) 
{ 
//Create an object and store the values 

回答

1

你可以只使用一个XMLList并遍历该

var pl:XMLList = NodesXml.node; 

这将创建一个XMLList在你的XML每个“节点”元素可以是通过索引像数组访问。然后,您可以通过XMLList中的元素循环:

for (var p:int=0;p<pl.length();p++){ 

    var nodeimage = pl.img[p]; 

    } 

为在舞台上,你可以实现它扩展一个类的对象精灵:

public class CustomSprite extends Sprite { 


     public var somevalue:int; 

    } 

您可以将您的CustomSprite添加到舞台,并有属性,你可以通过节点列表循环来从xml中填充属性。

,如果你不知道怎么那么这里创建自定义类是一个教程:

http://www.flashandmath.com/bridge/fractions/example1.html

+0

谢谢你,我可以问你写的样本?简化了一些事情,我很难想象我头脑中的结构。我不能理解我将如何单独存储值或对象,以便以后可以使用所有属性访问它们。 – Marvin 2010-01-24 15:07:25

+0

我会担心在xml中使用“节点”和“名称”,因为即使它们工作,它们也会在闪存中被高亮显示为保留字 – PeanutPower 2010-01-24 15:11:02

+0

生病时要记住名字。你也可以检查我放在原始文章中的代码吗?我不能理解你的例子。 – Marvin 2010-01-24 15:12:06

相关问题