Comunidad de diseño web y desarrollo en internet online

getChildByName() + Flex + AS3

Citar            
MensajeEscrito el 25 Sep 2008 07:39 pm
Hola, tengo el siguiente problema:

He creado una funcion as3 dentro de mi applicacion mxml que lo que hace es crear un numero determinado de campos de texto, estos se construyen dinamicamente dentro de un form, con sus correspondienres formItem, y dentro del formItem, se encuentra cada uno de los campos de texto, a ellos les agrego la propiedad name que es un nombre XXX con un numero que se incremementa para que los nombres sean unicios.
el problema es que ahora no se como pueda acceder a dichos campos de texto para obtener el valor de cada uno.....


Código :

private function dinamicFields(){
dinamicForm = new Form();
            dinamicForm.name = "formElem";
            var i:int = 1;
            while(i <= numCampos){
               
                           
               var formItemElem:FormItem = new FormItem();
               formItemElem.label = "Elemento:";
               formItemElem.name = "itm";
               var elem:ComboElementos = new ComboElementos();
               elem.name = "elem"+i;
               formItemElem.addChild(elem);
               dinamicForm.addChild(formItemElem);

i++;
}

form_fina.addChild(dinamicForm);
}
               

Por kakashysen

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 07:45 pm
para acceder por getChildByName tienes una lógica que es esta:

elem.name = "elem"+i;

Entonces getChildByName("elem"+i)

Donde i tiene que tener algún valor, claro

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Sep 2008 07:54 pm
sip eso hago pero en el caso de que quiera acceder al hijo del hijo ... algo asi como puedo hacerlo??

Por kakashysen

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:02 pm
Repites el getChildByName o getChildAt (necesitarás hacer un cast sobre el Container o incluso notación de array)

var cont:DisplayObject = getChildByName("elem"+i)
var el:* = cont.getChildByName(....)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:08 pm
hize como me dijo pero no me funciona me da un error:

var f:DisplayObject = form.getChildByName("formElem");
var c:* = f.getChildByName("itm");

Call to a possibly undefined method getChildByName through a reference with static type flash.display:DisplayObject.

o sera que no le entendi bien??

Por kakashysen

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:11 pm
O se puede hacer un cast de DisplayObject a un objeto Form y FormItem ???

Por kakashysen

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:22 pm
Prueba poniendo FormItem

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:28 pm
Na!!!.. no funk,
jejeje.. pero lo logre de otra forma, utilizando en DisplayObjectContainer asi

var f:DisplayObjectContainer = DisplayObjectContainer(form.getChildByName("formElem"));
var fi:DisplayObjectContainer = DisplayObjectContainer(f.getChildByName("itmval"));

con esto si puedo llegar a cada uno de los hijos de los hijos de los hijos.....


no se si sea una forma muy primitiva o poco optima , pero me funk por el momento, asi es que si sabe de otra forma le agradesco que me cuante.

de igual forma muchas gracias por su colaboracion siempre esta pendiente de los foros.. :) gracias .!

Por kakashysen

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 07:32 pm
Tenia el mismo problema XD... y a pesar de que efectivamente encapsulada mis datos dentro del contenedor que creabas no tenia la opcion de traer el valor que tenia el texto.. en mi caso era un VSlider. lo solucione de la siguiente manera...

Código :

var canvas0:Canvas=view02.getChildByName("canvas_flecha0") as Canvas;
var slider0:VSlider=canvas0.getChildByName("slider_flecha0") as VSlider;
// Y Bingo!!! aqui esta el valor :P
Alert.show(""+slider0.value);

//No me funciono de la siguiente manera... en realidad no supe como recoger el valor del slider :P
var f:DisplayObjectContainer = DisplayObjectContainer(view02.getChildByName("canvas_flecha0"));
var fi:DisplayObjectContainer = DisplayObjectContainer(f.getChildByName("slider_flecha0"));



Lo posteo por si alguien tiene el mismo problema en algun momento.

Saludos

Por Pbax

12 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.