Comunidad de diseño web y desarrollo en internet online

convertir a Boton

Citar            
MensajeEscrito el 28 Feb 2009 10:10 pm
Hola a todos, como andan¡
hoy traigo una duda, que espero sea simple.

sucede que tengo una clase, donde hago 2 consultas a una base de datos mediante remoting, el primero carga unas categorias en un combobox y la segunda se produce al seleccionar algun item de ese combo, el cual trae las imagenes correspondientes a la categoria seleccionada.
la duda, viene que yo debo hacer que cada imagen recuperada de la categoria debe ser un boton luego, ya que estas hacen una llamada a otro metodo php para traer varias cosas.

el problema es que yo traigo las imagenes pero no se como hacerlas boton y agregarle la accion, ya que dependiendo de la categoria puede haber 1 o 10 o 100 imagenes.
si pueden darme una mano se los agradeceria.
aqui abajo, pongo el codigo de la llamada que estoy realizando en la clase.

desde ya muchas gracias.
saludos

Código :

public function nuevaConexion(idCategoriaSeleccionada)
      {
         var idCategoriaImagen:Number=idCategoriaSeleccionada;
         responder = new Responder(respuesta2, error);         
         conexion.call("categoriaImagen.obtenerImagenesDeCategorias", responder, idCategoriaImagen);
      }
      
      public function respuesta2(resultado:Object):void
      {
         t = resultado.serverInfo.initialData;
         
         for(i=0; i<t.length; i++)
         {
            trace("idimagen: "+t[i][0]);
            trace("nbre_imagen: " + t[i][1]);
            
            cargador.load(new URLRequest("tarjetas_t/"+t[i][1]+".jpg"))
            cargador.x=(10*i)+10;
            cargador.y = 100;
            trace ("cantidad de elementos: " + this.numChildren);
            addChild(cargador);
//AQUI FALTARIA LA CONVERSION
         }
      }

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 01 Mar 2009 10:17 am
por lo general yo lo met dentro de un mc vació para poder reconocerlo luego ,

Código :

 public function respuesta2(resultado:Object):void
      {
         t = resultado.serverInfo.initialData;
         
         for(i=0; i<t.length; i++)
         {
            trace("idimagen: "+t[i][0]);
            trace("nbre_imagen: " + t[i][1]);
            
            cargador.load(new URLRequest("tarjetas_t/"+t[i][1]+".jpg"))
            cargador.x=(10*i)+10;
            cargador.y = 100;
            trace ("cantidad de elementos: " + this.numChildren);
            var ContMC:MovieClip=new MovieClip();
            addChild(ContMC);
           ContMC.addChild(cargador);
           ContMC.addEventListener(MouseEvent.MOUSE_DOWN,funcionDEesteBoton)
            
         }
      }
public function funcionDEesteBoton(event.MouseEvent):void{
   trace(event.currentTarget.name)
}

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Mar 2009 10:51 am
Lynxcraft, agradezco tu ayuda sin embargo el codigo que me pusiste es el mismo que tengo yo, solo le modificasete el nombre al MC, ya que prueba esta definido con las variables como un MC. y ademas, me tira error con lo tuyo, dice: "1084: Error de sintaxis: se esperaba rightparen antes de dot."

desde ya gracias pos tu respuesta. pero todavia no he conseguido lo q deseo.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 01 Mar 2009 03:50 pm
Pues en el codigo hay un gran error en las ultimas lineas:

Código ActionScript :

public function funcionDEesteBoton(event.MouseEvent):void{ 

Hay que cambiarlo por:

Código ActionScript :

public function funcionDEesteBoton(event:MouseEvent):void{ 

Creo que olvido apretar shift, hay nos cuentas si anda.

Suerte :)

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 01 Mar 2009 04:35 pm
amigos, muchas gracias. Este es el codigo final que quedo.

Código :

public function respuesta2(resultado:Object):void
      {
         t = resultado.serverInfo.initialData;
         
         for(i=0; i<t.length; i++)
         {
            trace("idimagen: "+t[i][0]);
            trace("nbre_imagen: " + t[i][1]);
            cargador.load(new URLRequest("tarjetas_t/"+t[i][1]+".jpg"))
            cargador.x=(10*i)+10;
            cargador.y = 100;
            trace ("cantidad de elementos: " + this.numChildren);
            var ContMC:MovieClip=new MovieClip();
            addChild(ContMC);
            ContMC.addChild(cargador);
            ContMC.buttonMode = true;
            ContMC.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarImagen)            
         }
      }
      public function seleccionarImagen(event:MouseEvent):void
      {
         trace(event.currentTarget.name)
      }


pero tengo una duda y un problema.

de esta forma, me crearia por cada objeto recuperado un boton, el problema viene a que cuando hay 2 o mas objetos recuperados solo me mustra uno y no se porque, ya que en los trace me dice q estan todos.

y la otra duda, es como hacer, para que el boton, al ser presionado, envie a cualquier funcion el idimagen, de la imagen seleccionada, que se recupero en la funcion respuesta 2, el cual corresponde a:

Código :

trace("idimagen: "+t[i][0]);


desde ya gracias por sus respuestas.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Mar 2009 04:16 pm
Se muestra uno porque se pueden estar empalmando trata cambiando las coordenadas de " ContMC". Para saber el id de cada imagen pon ese id en ContMC:

Código ActionScript :

//una linea antes de agregar el listener
     //Creamos la propiedad id en ContMC
       ContMC.id=t[i][0];

///En la funcion seleccionarImagen en lugar de trazar el nombre trazas id
 trace(event.currentTarget.id);

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 04:27 pm
Hola, la verdad que no entiendo para que me sirve lo que me comentaste, ya que correctamente me tira los id recuperados, pero sigue mostrandome 1 sola imagen por categoria, cuando en algunas hay mas de una.
Supuestamente con el siguiente codigo, la imagen tendria que ir corriendose hacia la derecha 10 px

Código :

cargador.x=(10*i)+10;
cargador.y = 100;

sin embargo esto no funciona, por lo que luego puse:

Código :

ContMC.x = (10 * i) + 10;
ContMC.y = 200;

pero el reultado sigui siendo el mismo, una sola imagen por categoria.

desde ya gracias por tu ayuda.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Mar 2009 05:49 pm
Es porque estas cargando todas las imagenes en el mismo contenedor!!

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 02 Mar 2009 06:02 pm

escribió:

Es porque estas cargando todas las imagenes en el mismo contenedor!!


ha ha, puede ser.

y como hago para que se carguen en contenedores diferentes?

he probado varias cosas pero no lo puedo solucionar.

desde ya gracias.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Mar 2009 06:36 pm
No hay problema con que todas esten en un mismo contenedor.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 06:45 pm
El problema esta en el cargador, tu agregas el cargador y este solo carga una imagen ala vez entonces cada que cargas otra se destruye la primera.

Código ActionScript :

//Antes de la carga haz un nuevo cargador
cargador=new Loader();
 cargador.load........

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 06:50 pm
pero no entiendo, la idea es que yo recupere las imagenes de una categoria, para eso hago:

Código :

public function nuevaConexion(idCategoriaSeleccionada)
      {
         var idCategoriaImagen:Number=idCategoriaSeleccionada;
         responder = new Responder(respuesta2, error);         
         conexion.call("categoriaImagen.obtenerImagenesDeCategorias", responder, idCategoriaImagen);
      }

en donde idCategoriaSeleccionada es el id de la categoria donde yo vos a rescatar las imagenes que pertenecen a esas imagenes.
para eso loque hago es:

Código :

public function respuesta2(resultado:Object):void
      {
         t = resultado.serverInfo.initialData;
         
         for(i=0; i<t.length; i++)
         {
            trace("idimagen: "+t[i][0]);
            trace("nbre_imagen: " + t[i][1]);
            cargador.load(new URLRequest("tarjetas_t/"+t[i][1]+".jpg"))
            //cargador.x=(10*i)+10;
            //cargador.y = 100;
            trace ("cantidad de elementos: " + this.numChildren);
            
            ContMC.buttonMode = true;
            ContMC.x = (10 * i) + 10;
            ContMC.y = 200;
            addChild(ContMC);
            ContMC.addChild(cargador);
            ContMC.id=t[i][0];
            ContMC.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarImagen)            
         }
      }

que tendria q mostrarme todas las imagenes que pertenecen a la categoria y deberia dejarla como un boton, haciendo para todos la misma accion, ya que lo estoy haciendo dinamico.

pero no entindo, donde tengo q poner, segun tu respuesta Angel Roberto, lo q me estas diciendo....

que es lo q sucede que no me muestra mas de 1 imagen por categoria?????


desde ya gracias por las respuestas y por atender tan bien al post.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Mar 2009 07:29 pm
Te muestra solo una porque aggregas las imagenes de la siguiente forma:

Código ActionScript :

  ContMC.addChild(cargador);

Cada vez que mandas llamar cargador.load() el contenido de cargador se destruye y carga uno nuevo, suponiendo que tu cargas
la imagen1..

Código ActionScript :

cargador.load(imagen1);
 ContMC.addChild(cargador);
//ContMC..contiene ahora a cargador que tiene imagen1

cargador.load(imagen2);
 ContMC.addChild(cargador);
//contenedor sigue conteniendo a cargador que ahora tiene imagen2
//cargaste dos imagenes pero solo tienes una


Crea un nuevo cargador para que cada que pongas "ContMC.addchild(cargador)" agregues un nuevo cargador con una nueva imagen

Código ActionScript :

public function respuesta2(resultado:Object):void
      {
         t = resultado.serverInfo.initialData;
         
         for(i=0; i<t.length; i++)
         {
            trace("idimagen: "+t[i][0]);
            trace("nbre_imagen: " + t[i][1]);
           
           ////////////AKI CREAS DE NUEVO EL CARGADOR////////
            cargador=new Loader();
           ////////////////////////////////////////////////////
            cargador.load(new URLRequest("tarjetas_t/"+t[i][1]+".jpg"))
            //cargador.x=(10*i)+10;
            //cargador.y = 100;
            trace ("cantidad de elementos: " + this.numChildren);
            
            ContMC.buttonMode = true;
            ContMC.x = (10 * i) + 10;
            ContMC.y = 200;
            addChild(ContMC);
            ContMC.addChild(cargador);
            ContMC.id=t[i][0];
            ContMC.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarImagen)            
         }
      }

Con esa linea ahora tendras dentro de ContMC mas imagenes

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 07:46 pm
Segun entiendo quieres capturar el "id" de cada imagen al click y capturas el click de esta manera:

Código ActionScript :

ContMC.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarImagen) ;            
//Y seleccionar imagen tiene el siguiente codigo

 public function seleccionarImagen(event:MouseEvent):void
      {
         trace(event.currentTarget.name)
      }

La captura del click se hace en ContMC asi que le des click ala imagen que le des te va trazar el nombre de ContMC, si cambias el listener a cargador te trazara el nombre de cada cargador agregado(el nombre de cada imagen).

Código ActionScript :

cargador.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarImagen)  ; 

Haz una prueba con esto a ver como te funciona :)

Pero creo que con esto no tienes acceso al id "trace(event.currentTarget.id)" haz la prueba, para acceder a mi se me ocurre que le asignes el id a tu contenedor que como es MovieClip es dinamico y le puedes agregar propiedades:

Código ActionScript :

public function respuesta2(resultado:Object):void 
      { 
         t = resultado.serverInfo.initialData; 
          
         for(i=0; i<t.length; i++) 
         { 
            trace("idimagen: "+t[i][0]); 
            trace("nbre_imagen: " + t[i][1]); 
            
           ////////////AKI CREAS DE NUEVO EL CARGADOR//////// 
            cargador=new Loader(); 
           //////////////////////////////////////////////////// 
            cargador.load(new URLRequest("tarjetas_t/"+t[i][1]+".jpg")) 
            //cargador.x=(10*i)+10; 
            //cargador.y = 100; 
            trace ("cantidad de elementos: " + this.numChildren); 
           
          /////CREAS UN NUEVO CONTENEDOR PARA CADA IMAGEN//////
            ContMC=new MovieClip();
         ///////////////////////////////////////////////////////////
            ContMC.buttonMode = true; 
            ContMC.x = (10 * i) + 10; 
            ContMC.y = 200; 
            addChild(ContMC); 
            ContMC.addChild(cargador); 
          //CREAMOS LA PROPIEDAD ID EN EL CONTENEDOR//////////////
            ContMC.id=t[i][0];  //Mandamos el id de la imagen cargada el id de contenedor 
           /////////////////////
           //Cada nuevo contenedor tendra su propio listener de click y cada uno 
          //trazara su id que sera el id de la imagen que contiene
            ContMC.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarImagen)             
         } 
      } 

public function seleccionarImagen(event:MouseEvent):void
      {

      //Trazamos el id en lugar de nombre(los contenedores ya tienen un id que es iwal al de cda imagen dentro)
         trace(event.currentTarget.id)
      }



Con eso creo ya queda solucionado XD!!! Saludos

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 07:52 pm
ho, Angel Roberto, muchisisisisimas gracia.
me has solucionado el problema y la aplicacion ahora funciona correctamente.

gracias por todas tu respuestas y tu paciencia y por explicarme los errores.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 02 Mar 2009 07:56 pm
Para eso estamos!! :wink:

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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