Comunidad de diseño web y desarrollo en internet online

A vueltas con addChild()

Citar            
MensajeEscrito el 08 Jun 2009 06:29 pm
Hola.

Estoy comenzando con AS3 y ya me he encontrado un primer escollo:

Lo que intento hacer es leer los campos de una base de datos (usuarios... por ejemplo) y colocar en el escenario tantos clips como entradas recoge la llamada.

La conexión la hago con AMFPHP y recojo los datos (en un trace) y coloco los clips (que están en la biblioteca) sin problemas... el problema es que dentro del clip hay un campo de texto dinámico al que no consigo pasarle ningún parámetro... me da error (término no definido)...

Código ActionScript :

for (var i:uint=0; i < t.length; i++) {
               //trace(t[i][0]); -- esto es lo que quiero colocar en el campo de texto
               var clase:Class = getDefinitionByName("ficha") as Class;
               var mc = new clase();
               mc.x=10;
               mc.y=i*70;
               mc.texto_txt.text:String = t[i][0]; // esto es lo que da error
               addChild(mc);

            }


He probado varias formas que he visto por el foro pero me estoy dejando algo atrás... ¿Alguién que me oriente?

Un saludo.

Por juanfher

74 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Jun 2009 06:34 pm
En tu clase (nombre bastante inadecuado) agrega un método público setNombre y lo llamas en el loop, pasándole como argumento lo que quieres que muestre

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Jun 2009 05:38 am
Gracias solisarg pero no me queda nada claro... lo he intentado de varias formas y no consigo que rellene el texto dinámico que hay en los clips "atacheados" con addChild...

Los primeros pasos son duros...

El código que uso es este:

Código ActionScript :

var nombre:String = new String;

   function onResult(responds:Object):void {
      var t:Array=responds.serverInfo.initialData;
      for (var i:uint=0; i < t.length; i++) {
         trace(t[i][0]);
         var clase:Class=getDefinitionByName("ficha")  as  Class;
         var mc=new clase;
         mc.x=10;
         mc.y=i * 70;
         nombre = t[i][0];
         //trace(nombre);
         mc.texto_txt.text = nombre;
         addChild(mc);

      }
   }


¿Alguien que me una otra mano?

Por juanfher

74 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2009 06:24 am
:? DIOS MIO MIRA QUE SOY BURRO!!!...

Resulta que mi problema venía por otra parte y yo empecinado en que era el código... esto funciona bien...

Código ActionScript :

for (var i:uint=0; i < t.length; i++) {

   trace(t[i][0]);
   var ficha_usuario:Class=getDefinitionByName("ficha")  as  Class;

   var ficha_mc=new ficha_usuario;
   ficha_mc.x=10;
   ficha_mc.y=i * 70;
   ficha_mc.name = "ficha"+i+"_mc";
   nombre = t[i][0];
   //trace(ficha_mc.name);
   ficha_mc.texto_txt.text = nombre;
   addChild(ficha_mc);

}


... si el campo de texto que está dentro del clip "ficha" se llama texto_txt... pero si se llama name_txt pues claro que salta el error... joer! mira que soy membrillo...

Bueno... sigamos que me queda mucho por delante...

Por juanfher

74 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2009 06:25 am
Se me ocurren varias cosas:
1.-Aseguraté que tu Clase tenga una caja de texto con nombre de instancia "texto_txt"
2.-Aseguraté de que escribes

Código ActionScript :

var mc=new clase() //<---con paréntesis

3.-Aseguraté de que tu Clase "ficha" "extiende" de MovieClip, así como las mayúsculas y minúsculas -vamos, que no sea que tu Clase se llame "Ficha" en lugar de "ficha"
4.-Para probar
4a)Escribir directamente

Código ActionScript :

var mc=new ficha();
//en lugar de 
var clase:Class=getDefinitionByName("ficha")  as  Class; 
var mc=new clase; 

4b)Hacer una "conversión de cast", vamos, escribir

Código ActionScript :

TextField(mc.texto_txt).text=nombre


NOTA1:Lo que decía Jorge es que tu clase tenga un método

Código ActionScript :

//dentro de tu Clase
public function setCaption(nombre:String):void{
    texto_txt.text=nombre;
}
//en el for de la película principal escribes
mc.setCaption(nombre)

NOTA2:Me inclino por mi opción 4b

Por Eliseo2

710 de clabLevel



 

firefox

 

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