2010-10-22 17 views
0

J'ai un projet Adobe Flex dans lequel se trouve le balisage de mise en page suivant.adobe flex obtenir l'enfant de l'enfant

<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> 

Je voudrais être en mesure d'obtenir la valeur de chacun des textes (int) attribut dans le s: élément d'étiquette. J'ai essayé ceci:

var count:int = 0; 

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

Mais cela ne fonctionne pas. En fait, lorsque le débogage "b" est toujours nul même si "grid.getElementAt (0)" renvoie un BorderContainer.

J'apprécierais toute aide que n'importe qui peut me fournir dans la résolution de mon problème.

Merci,

Kamal.

Répondre

1

Vous devez itérer sur les éléments du groupe comme ça:

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); 
} 

En cas il n'y a pas seulement BorderContainer toi de et étiquette vous devez faire une vérification peu de type (coulée avec « comme » et la vérification de null) ...

+0

Merci Gertshi! cela a fait l'affaire. – Kamal