AS3组合框引用xml

时间:2012-05-24 21:38:19

标签: xml actionscript-3 flash actionscript

我对动作脚本很新,我有这个场景。我有一个组合框“elementPicker”,我有一个项目从XML文件加载图像,XML文件设置如

<elements>
<head>
   <imgpath>/img/x.png</imgpath>
</head>
<head>...</head>
<head>...</head>

<eyes>...</eyes>
<eyes>...</eyes>
<eyes>...</eyes>
</elements>

依此类推,所以在我的组合框中我会有“头”,“眼睛”等选项。我想要的是基于组合框中的数据来更改哪个xml元素被加载到包含图像路径的数组中

我试过像

这样的东西
var comboSelection:String = elementPicker.selectedItem.label;

然后,当我循环将路径放入数组时:

elementPathList.push(theXMLData.comboSelection.imgpath[ b ]);

但这不起作用,输出显示:TypeError:错误#1009:无法访问空对象引用的属性或方法。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

不确定我是否完全理解这个问题,但是类型错误告诉你comboSelection(字面意思,不是值而是那个词)不存在作为你的xMLData对象的属性,它基于你发布的内容是真的。

comboSelection不会被“看作”您创建的局部变量或它的值,而是作为XML数据对象的属性,因此它不是类型错误。

看起来你要做的就是在列表中找到具有相应属性的项目,你可以使用E4X来实现这一点,谷歌你会发现使用e4x的细节就像是XML数据。(@ nodeName = comboSelection).head.imgpath。

但是我认为更好的方法是使用值对象填充组合框,这些对象都具有label属性并且具有直接与对象关联的实际源路径。通过这种方式,您可以使用elementPicker.selectedItem.imgPath而不是在事后在XML中尝试查找它。该解决方案将使代码更容易混淆和更快。如果你自己不能这样做,你可以发布更多关于你的组合框的代码以及如何加载你的XML我可以帮助你修改它以实现我正在解释的内容。

如果代码非常大,您可以将其发布到pastebin,只需在原始帖子中删除一个链接。

好吧,因为你安抚了我,我在这里采取了一个裂缝,这是我的两个结果:

http://www.shaunhusain.com/FlashAvaEditor/

http://www.shaunhusain.com/FlexAvaEditor/

右键单击flex for source,我在这里打包FLA文件

http://www.shaunhusain.com/FlashAvaEditor/FlashAvaEditor.zip

让我知道你对这种方法的看法,或者我是否错过了这个标记。