如何从MXML文件中获取所有<s:Images/>
,无论它们在该文件的层次结构中的哪个位置?
所以对此:
<s:Group>
<s:Image/>
<s:VGroup>
<s:Image/>
<s:Image/>
<s:Image/>
<s:HGroup>
<s:Image/>
<s:Image/>
</s:HGroup>
</s:VGroup>
</s:Group>
我想从第一个组获取所有图像,无论它们是否包含在组本身或VGroup或HGroup中。
我该怎么办呢?
答案 0 :(得分:3)
filterImages([], this);
protected function filterImages(array:Array, child:Object):Array
{
for(var i:int = 0; i < child.numChildren; i++)
{
if(child.hasOwnProperty("getElementAt"))
{
var subChild:Object = child.getElementAt(i);
if(subChild is Image)
{
array.push(subChild);
}else
{
filterImages(array, subChild);
}
}
}
return array;
}
答案 1 :(得分:1)
递归地,以伪代码
myFunc(IContainer root):void
{
for(i=0;i<root.numChildren;i++)
{
curChild = root.getChildAt(i);
if(curChild is Image)
doSomethingElse(curChild);
if(curChild is IContainer)
myFunc(curChild);
}
}
由于您的标签中有Flex 4,因此您需要查看接口,而不是IContainer: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/IVisualElementContainer.html