Comunidad de diseño web y desarrollo en internet online

Ayuda con nombre de instancias dinamicas...

Citar            
MensajeEscrito el 17 Jun 2010 10:07 pm
bueno como empezar...

mcHolder // MC vacio que es el cargador principal ubicado en el stage
mcCarga // MC llamado dinamicamente desde la libreria
mcBtnMegusta // MC instanciado en mcCarga con nombre de instancia = mcBtnMegusta
mcBtnVermas // MC instanciado en mcCarga con nombre de instancia = mcBtnVermas
nombre_txt.text // TextField instanciado dentro de mcCarga
puntaje_txt.text // TextField instanciado dentro de mcCarga

La idea original es re-asignar el nombre de instancia a mcBtnMegusta y mcBtnVermas dinamicamente, ambos clips estan dentro de mcCarga que se llama dinamicamente...


Código ActionScript :

for (var row:Number = 0; row < r.serverInfo.initialData.length; row++) {
      
      nombres = String(r.serverInfo.initialData[row][0] + "");   
      puntaje = String(r.serverInfo.initialData[row][3] + "");
      
               var mcClip:MovieClip = new mcCarga;
             
                //Asigno el nombre de intancia a cada mcClip creado
      mcClip.name = "mcClip" + row;         

                //cargo cada mcClip creadoen mcHolder
      mcHolder.addChild(mcClip);

                //propiedades de mcClip
                mcClip.alpha = 0.75;      
      mcClip.x = 290 * row;
      mcClip.y = 50;

                //Asigno variables a las cajas de texto creadas dentro de mcCarga      
      mcClip.nombre_txt.text = nombres;
      mcClip.puntaje_txt.text = puntaje;

                 //Creacion de nuevos MC que estan dentro de mcCarga   y que tienen su respectivo nombre de instancia
                var btnLike:MovieClip = mcClip.getChildByName("mcBtnMegusta") as MovieClip;
      var btnVer:MovieClip = mcClip.getChildByName("mcBtnVermas") as MovieClip;

                //He aqui donde necesito al experticia de ustedes, la idea es re-nombrar las instancias mcBtnMegusta y 
                //mcBtnVermas con el fin de saber que boton es el seleccionado.

                // Lo siguiente no me sale
                btnLike.name = "btnLike" + row;
                btnVer.name = "btnVer" + row;

                this["btnLike" + row].buttonMode = true;
                this["btnVer" + row].buttonMode = true;
                        
                //this["btnLike" + row].addEventListener(MouseEvent.MOUSE_UP,validar);
                this["btnVer" + row].addEventListener(MouseEvent.MOUSE_UP,carga);               
}

 function carga(event:MouseEvent) {
              var nombre:String = event.currentTarget.name;
         var num:uint = uint(nombre.replace("btnVer", ""));
                        trace("El boton seleccionado es: " num) // me arroja 0, porque no se renombra el MC
                                       
      }



Si quedarian los MC mcBtnMegusta y mcBtnVermas asignados como btnLike0, btnLike1, btnLike2, ....y btnVer0, btnVer1, btnVer2..., respectivamente se podria manupular la info del clip selecionado...

Necesito ayuda con este tema, de antemano muchas gracias a los que me pudan colaborar.....Espero haber sido claro en la explicación...

Por Fidelacho

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2010 10:53 pm
No puedes cambiarle el nombre a un objeto puesto en linea de tiempo, te debe marcar un error al intentarlo, porq necesitas camibiarle el nombre?? ya tienes tus movieclips en otras variables no veo el problema:


Código ActionScript :

//Ya tienes una referencia a tus clips no veo la necesidad de cambiarle el nombre
var btnLike:MovieClip = mcClip.getChildByName("mcBtnMegusta") as MovieClip; 
var btnVer:MovieClip = mcClip.getChildByName("mcBtnVermas") as MovieClip; 
 
                
 
   
 
//this["btnLike" + row].buttonMode = true; 
btnLike.buttonMode = true; 
//this["btnVer" + row].buttonMode = true; 
btnVer.buttonMode = true; 
                         
//this["btnLike" + row].addEventListener(MouseEvent.MOUSE_UP,validar); 
btnLike.addEventListener(MouseEvent.MOUSE_UP,validar); 
this["btnVer" + row].addEventListener(MouseEvent.MOUSE_UP,carga);
btnVer.addEventListener(MouseEvent.MOUSE_UP,carga);


Si necesitas ponerles un nombre consecutivo para hacer alguna accion dependiendo del numero name_0,name_1 etc; la clase movieclip es dinamica y puedes agregar propiedades algo como un btnVer.indice=0,btnVer2.indice=2; y leer dicho indice

Por Angel Roberto

Claber

248 de clabLevel



 

safari
Citar            
MensajeEscrito el 17 Jun 2010 10:59 pm
No me quedo muy claro lo del indice....

Y con respecto al porque necesito renonbrar el MC, o mejor como dices tu, colocarle un consecutivo, lo que pasa es que necesito reconocer el MC presionado para extender los datos que me muestra el MC....

Por Fidelacho

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Jun 2010 11:07 pm
Ademas cuando llamo a la funcion carga();

Código ActionScript :

function carga(event:MouseEvent) { 
              var nombre:String = event.currentTarget.name; 
              var num:uint = uint(nombre.replace("btnVer", "")); 
              // trace("El boton seleccionado es: " num) // me arroja 0, porque no se renombra el MC 
              trace(nombre) // me arroja btnVer
                                        
      }


trace(nombre) // me arroja btnVer;

Y necesito un identificador para llamar los metodos y que se apliquen a es MC en especifico

Por Fidelacho

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2010 03:16 pm
Podrias directamente ponerles un nomnre de instancia que te sirva y asi no necesitar renombrar, tmb podrias hacer lo del indice que estaria mejor ya que te va servir conocer ese pequeño truquito.

En lugar de renombrarlos ponles una propiedad indice:

Código ActionScript :

btnLike.indice=0;
btnVer.indice=1;

//En la funcion carga
function carga(event:MouseEvent) {  
              trace("El boton seleccionado es: ",event.currentTarget.indice);                                    
      }


Prueba eso y me cuentas.

Por Angel Roberto

Claber

248 de clabLevel



 

safari
Citar            
MensajeEscrito el 07 Jul 2010 05:52 pm
Bueno después de un tiempo respondo a este mensaje, y decir que ya solucione mi problema......de la siguiente manera:

Código ActionScript :

//Ya tienes una referencia a tus clips no veo la necesidad de cambiarle el nombre 
var btnLike:MovieClip = mcClip.getChildByName("mcBtnMegusta") as MovieClip;  
var btnVer:MovieClip = mcClip.getChildByName("mcBtnVermas") as MovieClip;     
  
//this["btnLike" + row].buttonMode = true;  
btnLike.buttonMode = true;  
//this["btnVer" + row].buttonMode = true;  
btnVer.buttonMode = true;  
                          
//this["btnLike" + row].addEventListener(MouseEvent.MOUSE_UP,validar);  
btnLike.addEventListener(MouseEvent.MOUSE_UP,validar);  
this["btnVer" + row].addEventListener(MouseEvent.MOUSE_UP,carga); 
btnVer.addEventListener(MouseEvent.MOUSE_UP,carga); 


NO necesito renombrar el MC btnVer, ya que el consecutivo lo obtengo del MovieClip padre asi:

Código ActionScript :

function carga(event:MouseEvent) {   
   
   var btnActivo:String = event.currentTarget.name;
        //event.currentTarget.name, me arroja el nombre del MC padre que activo el evento
        trace(btnActivo); // Me arroja el MC padre donde esta contenido el MovieClip "btnVer", ejemplo mcClip1
   var nombre:MovieClip = MovieClip(event.currentTarget.parent);
   var activa:String = nombre.name;
   
   var num:uint = uint(activa.replace("mcClip", ""));
   trace(num); // Me arroja el consecutivo del MovieClip padre
   
        //Ya con esta referencia puedo obtener los campos nombres y puntaje del MC seleccionado....
        // y enviar esos parametros a otro swf      
   
}


Me estaba complicando, pero en fin se logro el objetivo que era lo esencial....Muchas Gracias a los que se tomaron la molestia en ayudarme.....

Por Fidelacho

12 de clabLevel



 

chrome

 

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