2010-10-22 137 views
0

我有一个Adobe Flex项目,其中存在以下布局标记。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元素中每个文本(如int)属性的值。我试过这个:

var count:int = 0; 

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

但这并不奏效。事实上,即使“grid.getElementAt(0)”返回一个BorderContainer,调试“b”时也始终为空。

我希望任何人都可以帮助我解决我的问题。

谢谢,

卡迈勒。

回答

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的和标签的,你需要做一个小的类型检查(与铸造“为”和检查空)...

+0

谢谢你Gertshi!这个伎俩。 – Kamal 2010-10-22 21:39:36