0

我对动作脚本很陌生,我有这个场景。我有一个组合框“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:无法访问空对象引用的属性或方法。

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

4

1 回答 1

1

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

comboSelection 没有被“视为”为您创建的局部变量或它的值,而是作为 XMLData 对象的属性,因此它不是类型错误。

看来你想要做的是在列表中找到具有相应属性的项目,你可以使用 E4X 来实现这一点,谷歌它你会找到使用 e4x 的详细信息,它会类似于 theXMLData.(@nodeName=comboSelection) .head.imgpath。

但是,我认为更好的方法是使用值对象填充组合框,这些值对象既具有标签属性,又具有与对象直接关联的实际源路径。这样,您可以只使用 elementPicker.selectedItem.imgPath 而不是事后尝试在 XML 中查找它。此解决方案将使代码更少混乱且更快。如果您自己无法做到这一点,您可以发布更多关于您的组合框以及您如何在 XML 中加载的代码,我可以帮助您修改它以实现我所解释的内容。

如果代码很大,您可以将其发布到 pastebin 并在原始帖子中放置一个链接。

好吧,既然你安抚了我,我就试了一下,这是我的两个结果:

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

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

右键单击 flex 的源代码,我在这里打包了 FLA 的文件

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

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

于 2012-05-24T21:52:08.597 回答