【问题标题】:adobe flex get child of childadobe flex 得到孩子的孩子
【发布时间】:2010-10-22 20:50:00
【问题描述】:

我有一个 Adob​​e 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);
}

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

在解决我的问题时,任何人都可以为我提供任何帮助,我将不胜感激。

谢谢,

卡马尔。

【问题讨论】:

    标签: apache-flex adobe flash-builder


    【解决方案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,您还需要进行一些类型检查(使用 'as' 进行强制转换并检查 null)...

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多