Olá, no atual projeto em que estou trabalhando há necessidade de construir componentes em flex em tempo de execução, mas como fazer isso? para muitos isso é um mito para outros já imaginaram um loop em Action script que faça isso, como o exemplo abaixo:
-
<?xml version=“1.0″ encoding=“utf-8″?>
-
<mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml” layout=“absolute”
-
creationComplete=“{init()}”>
-
-
<mx:Script>
-
<![CDATA[
-
import mx.controls.Label;
-
import mx.collections.ArrayCollection;
-
-
[Bindable]
-
private var array:ArrayCollection = new ArrayCollection(
-
[{nome:“teste”},{nome:“de”},{nome:“janderson”},{nome:“saberprogramar.com”},{nome:“gostou?”}]);
-
-
private function init():void{
-
-
for (var i:int=0; i <array.length;i++){
-
var label:Label = new Label();
-
label.text = array.getItemAt(i).nome;
-
box.addChild(label);
-
}
-
-
}
-
-
]]>
-
</mx:Script>
-
-
<mx:VBox id=“box”>
-
</mx:VBox>
-
-
</mx:Application>
parabéns para aqueles que imaginaram o código acima, vai funcionar e vai ser criado os labels um abaixo do outro pois se encontra em um vBox
Mas se eu disser que não é necessário, que existe uma forma mais simples que vc não vai precisar desta function que faz esse Loop? sim é verdade, poucos sabem mas o flex tem um recurso muito legal que simplifica ao máximo a vida do programador na hora de criar componentes em tempo de execução, estou falando do REPEATER.
esse exemplo que acabei de mostrar acima com repeater ficaria assim:
-
<?xml version=“1.0″ encoding=“utf-8″?>
-
<mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml” layout=“absolute”>
-
-
<mx:Script>
-
<![CDATA[
-
import mx.controls.Label;
-
import mx.collections.ArrayCollection;
-
-
[Bindable]
-
private var array:ArrayCollection = new ArrayCollection(
-
[{nome:“teste”},{nome:“de”},{nome:“janderson”},{nome:“saberprogramar.com”},{nome:“gostou?”}]);
-
-
-
]]>
-
</mx:Script>
-
-
<mx:VBox id=“box”>
-
<mx:Repeater id=“myRepeater” dataProvider=“{array}”>
-
<mx:Label text=“{myRepeater.currentItem.nome}”/>
-
</mx:Repeater>
-
</mx:VBox>
-
-
</mx:Application>
Bem mais simples não? é claro que não serve só para o caso citado acima, dê uma olhada na documentação aqui.
Bem é isso, post simples para mostrar algo simples que pode simplificar muita coisa
Cumps.




