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"?-->
-
creationComplete="{init()}">
-
<![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);
-
}
-
-
}
-
-
]]>
-
-
-
-
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:
-
-
<![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?"}]);
-
-
]]>
-
-
-
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.



