Comunidad de diseño web y desarrollo en internet online

Problema con objetos en as3

Citar            
MensajeEscrito el 12 Jun 2008 03:47 pm
soy nuevo con as3 y tengo una duda que seguramente es muy tonta, pero no encontre por ningun lado un ejemplo que me ayude, espero uds. lo puedan hacer

en Flash CS3, armo una clase para crear formularios

Código :

package utilidades{ 
   import flash.display.DisplayObjectContainer; 
   import flash.display.Sprite; 
   import flash.text.TextField; 
   import flash.text.TextFormat; 
   import flash.text.TextFieldType; 
   import flash.events.FocusEvent; 
   import flash.events.TextEvent; 
   ///////////////////////////////////////////////////// 
   public class formulario extends Sprite { 
      ///////////////// CONTRUCTOR///////////////////// 
      public var contenido:String = ""; 
      public var color_error:uint =0xFF0000; 
      public var color_set:uint; 
      public var color:uint; 
      public var label_text:TextField; 
      public var input_text:TextField; 
      ///////////////////////////////////////////////// 
      public function formulario():void { 
          
      } 
      public function crea_txt(ruta,nombre:String,color:uint,color_set:uint,X:Number,Y:Number):void { 
         /////////////////////////////////////////////////////////////// 
         //////////CREAMOS EL TEXTO LABEL/////////////////////////////// 
         label_text = new TextField(); 
         label_text.name=nombre+"_txt"; 
         label_text.text=nombre; 
         label_text.x=X; 
         label_text.y=Y; 
         /////////////////////////////////////////////////////////////// 
         ///////////CREAMOS EL TEXTO INPUT////////////////////////////// 
         input_text = new TextField(); 
         input_text.type=TextFieldType.INPUT; 
         input_text.name=nombre+"_input"; 
         input_text.border=true; 
         input_text.background=true; 
         input_text.maxChars=30; 
         input_text.width=250; 
         input_text.height=20; 
         input_text.x=X+100; 
         input_text.y=Y; 
         input_text.backgroundColor=color; 
         ruta.addChild(label_text); 
         ruta.addChild(input_text); 
                           } 
      ////////////////////////////////////////////////////////////////////// 
      ////////////////////////////////////////////////// 
       
   } 
}


y en el archivo . fla tengo este codigo para crear multiples objetos de esa clase con un bucle.

Código :


import utilidades.formulario; 
///////////////////////////VARIABLES///////////////////////// 
var nombre:Array = new Array("Nombre","Teléfono","Email","Comentarios"); 
var i:Number=0; 
var a:Number=0; 
//////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////// 
for (i=0; i<nombre.length; i++) { 
               var form:formulario= new formulario(); 
   form.crea_txt(mc_carga_form,nombre[i],color,color_set,50,35 * i); 
}



la pregunta es, como ingreso a las propiedades de esos objetos????? supongamos que quiero obtener la entrada de texto del 2 objeto creado, o de todos los objetos utilizando otro bucle??????

Alguien me puede ayudar. :? :?
Gracias

Por cgcman

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 12 Jun 2008 05:32 pm
Haces un get, por ejemplo este método:

public function getData():String{
return input_text.text
}

Luego haces formulario.getData()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Jun 2008 06:01 pm
Gracias por tu pronta respuesta Jorge, pero no me funciona tu ejemplo, de todas maneras habia probado algo similar....

Código :

public function valida():void {
  trace(input_text.text );
   if (input_text.text == "") {
   input_text.text="Dato necesario";
          }
}


El problema es que solo me muestra los datos del ultimo objeto que se crea en el bucle; mi pregunta era, como hago para obtener los datos cargados en todos los objetos, y asi poder validar????

Gracias de todas maneras :cool:

Por cgcman

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 12 Jun 2008 06:07 pm
Eso ya es otro problema. Si miras el buble, verás que los estás sobreescribiendo a todos:

var form:formulario= new formulario();

Es decir el puntero form se queda con el ultimo. Puedes por ejemplo darle un nombre de instrancia y luego usarlo

var form:formulario= new formulario();
form.name = nombre[i]

Y luego accedes a la instancia via:

ref = getChildByName("telefono")
ref.getData()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Jun 2008 07:19 pm
Yo añadiría que sacaras la variable del ciclo, no vale la pena estar creando una variable estática cada vez, además el nombre le incerementaria una variable para que fuera distinto en cada caso

Código :


public function crea_txt(ruta,texto:String,nombre:String, color:uint,color_set:uint,X:Number,Y:Number):void { 

         /////////////////////////////////////////////////////////////// 

         //////////CREAMOS EL TEXTO LABEL/////////////////////////////// 

         label_text = new TextField();

         label_text.name=nombre+"_txt"; 

         label_text.text=texto; 

         label_text.x=X; 

         label_text.y=Y; 

         /////////////////////////////////////////////////////////////// 

         ///////////CREAMOS EL TEXTO INPUT////////////////////////////// 

         input_text = new TextField();

         input_text.type=TextFieldType.INPUT; 

         input_text.name=nombre+"_input"; 

         input_text.border=true; 

         input_text.background=true; 

         input_text.maxChars=30; 

         input_text.width=250; 

         input_text.height=20; 

         input_text.x=X+100; 

         input_text.y=Y; 

         input_text.backgroundColor=color; 

         ruta.addChild(label_text); 

         ruta.addChild(input_text); 

                           } 

      ////////////////////////////////////////////////////////////////////// 

      ////////////////////////////////////////////////// 

       

   } 

}




Código :


var form:formulario;

//---Crear los objetos
for (i=0; i<nombre.length; i++) { 

              form = new formulario();
              form.crea_txt(mc_carga_form,nombre[i],nombre[i]+i,color,color_set,50,35 * i);

}

//---Acceder a los objetos

var label_text:Textfield;
var input_text:TextField;

for (i=0; i<nombre.length; i++) { 

          label_text = mc_carga_form.getChildByName(nombre[i]+i+"_txt") as TextField;
          input_text = mc_carga_form.getChildByName(nombre[i]+i+"_input") as TextField;

          //---Aqui cambio sus propiedades si quiero

}




Saludos

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Jun 2008 01:29 pm
Señores gracias por su ayuda, ya estoy avanzando en el tema, aun no lo solucione, pero al menos me cayo la ficha de como funciona, el tema estaba en el getChildyName(),

Gracias :D

Por cgcman

3 de clabLevel



 

msie7

 

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