Adobe Flex получить ребенка от ребенка - PullRequest
0 голосов
/ 23 октября 2010

У меня есть проект 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>

Я хотел бы иметь возможность получить значение каждого атрибута text (как int) в s:Элемент метки.Я попробовал это:

var count:int = 0;

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

Но это не работает.На самом деле, когда отладка «b» всегда равна нулю, даже если «grid.getElementAt (0)» возвращает BorderContainer.

Я был бы признателен за любую помощь, которую кто-либо может оказать мне в решении моей проблемы.

Спасибо,

Камаль.

1 Ответ

1 голос
/ 23 октября 2010

Вам нужно перебрать элементы группы следующим образом:

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» и проверкунуль) ...

...