我对动作脚本很新,我有这个场景。我有一个组合框“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:无法访问空对象引用的属性或方法。
关于如何做到这一点的任何想法?
答案 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
让我知道你对这种方法的看法,或者我是否错过了这个标记。