adobe flex得到孩子的孩子

时间:2010-10-22 20:50:00

标签: flex adobe flash-builder

我有一个Adobe Flex项目,其中包含以下布局标记。

<s:TileGroup id="grid" width="467" height="467" requestedRowCount="15" requestedColumnCount="15" horizontalGap="0" verticalGap="0" verticalAlign="middle" name="tg">
    <s:BorderContainer width="31" height="31" name="container">
         <s:Label text="999" verticalAlign="middle" textAlign="center" paddingLeft="0" paddingRight="2" paddingBottom="0" paddingTop="0" width="29" height="29" click="Clicked(event)"/>
    </s:BorderContainer>
    <s:BorderContainer width="31" height="31" name="container">
         <s:Label text="999" verticalAlign="middle" textAlign="center" paddingLeft="0" paddingRight="2" paddingBottom="0" paddingTop="0" width="29" height="29" click="Clicked(event)"/>
    </s:BorderContainer>
...
...
</s:TileGroup>

我希望能够获得s:Label元素中每个text(as int)属性的值。我试过这个:

var count:int = 0;

for each (var b:BorderContainer in grid)
{
    count += parseInt((b.getElementAt(0) as Label).text);
}

但这不起作用。实际上,当调试“b”始终为null时,即使“grid.getElementAt(0)”返回BorderContainer。

我很感激任何人都可以帮助我解决我的问题。

谢谢,

哈拉。

1 个答案:

答案 0 :(得分:1)

您需要迭代群组的元素:

var count:int = 0;

for (var i:int = 0; i < grid.numElements; i++)
{
    var b:BorderContainer = BorderContainer(grid.getElementAt(i));
    count += parseInt(Label(b.getElementAt(0)).text);
}

如果不仅有BorderContainer和Label's,你需要进行一些类型检查(使用'as'进行投射并检查null)......