Comunidad de diseño web y desarrollo en internet online

Ayuda con galeria y clase boton!!!

Citar            
MensajeEscrito el 14 Nov 2009 03:11 pm
Buenas!!
Estoy haciendo una galeria de imagenes con categorias usando una clase boton,
lo que hago es crear dinamicamente tantos botones como categorias haya con el nombre de la categoria, el problema es que para publicar las miniaturas de las imagenes tengo una variable con el numero de la categoria seleccionada en ese momento y nose como decirle a la funcion click de la clase boton que al pulsar ese boton se ponga en su categoria correspondiente,

¿¿alguien me dice como puedo acceder a una variable del codigo principal desde una funcion de la clase boton??

Muchas gracias!!

Por Duustito

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2009 04:31 pm
aqui copio el codigo

Código ActionScript :

var i:Number;
var tb:MovieClip;
var vis:MovieClip;
var dirX:Number = 0;
var dirY:Number = 0;
var ldr:Loader;
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
var categoria:Number =1;
var foto; Loader;
var xButton:Number = 0;

xmlLoader.load(new URLRequest("imagenes.xml"));

xmlLoader.addEventListener(Event.COMPLETE, CargaDirecta);


function CargaDirecta(e:Event):void
      {
         xmlData = new XML(e.target.data);
         //saco tanto botones como categorias, enviandole el nombre de la categorita 
         for (i = 1; i <= xmlData.categoria.length(); i++)
         {
            // Instancializamos la clase ButtonStd
            var myButton:ButtonStd = new ButtonStd (xmlData.categoria.(@id==i).@name);
            // Ubicamos el nuevo ButtonStd
            // ( fijaros que no es _x y _y )
            myButton.x = 10+xButton;
            myButton.y = 10;
            xButton=+100;
            // Añadimos el ButtonStd al escenario
            // esto equivale a un attachMovie
            addChild(myButton);
         }
         //recorro en el XML la categoria seleccionada para mostrar sus thumbnails
         for (i = 1; i <= xmlData.categoria.(@id==categoria).foto.length(); i++)
         {
            tb = new MovieClip();
            tb.x = 75 * dirX + 5;
            tb.y = 75 * dirY + 50;
            addChild(tb);
            dirX++;
            
            if (dirX == 2)
            {
               dirX = 0;
               dirY++;
            }
            CargarThumbs();
         }
      }
      
function CargarThumbs():void
      {
         //cargo la imagen en el movie clip y lo muestro
         ldr = new Loader();
         ldr.load(new URLRequest(xmlData.categoria.(@id==categoria).foto.(@id==i).@thumb));
         tb.addChild(ldr);
         Click(i);
      }
      
function Click(n:Number):void
{
   function alClick(e:MouseEvent):void
   {
      //Muestro la imagen en grande si pinchas en el thumbnail
      vis = new MovieClip();
      foto = new Loader();
      foto.load(new URLRequest(xmlData.categoria.(@id==categoria).foto.(@id==n).@image));
      vis.x = 475 - (xmlData.categoria.(@id==categoria).foto.(@id==n).@tam)/2;
      vis.y = 50;
      addChild(vis);
      vis.addChild(foto);
   }
   ldr.addEventListener(MouseEvent.CLICK, alClick);
}


Código ActionScript :

package {

// Contiene la libreria para objectos MovieClip
import flash.display.MovieClip;
// Contiene la libreria para manipulacion de eventos del raton
import flash.events.MouseEvent;
// Contiene la libreria para manipulacion de textos
import flash.text.TextField;

// Definimos el nombre de la clase
// Debe empezar por mayusculas y tener
// el mismo nombre que el archivo que la contiene
public class ButtonStd extends MovieClip {

   

// Método constructor que inicializa la clase
public function ButtonStd(_label:String) {
this._label = _label;
this.setEvents();
}

// Metodo 'setter' para modificar la etiqueta del boton
public function set _label(_label:String):void {
// Usamos la función getChildByName cuando queremos buscar un
// elemento creado directamente en este caso y con nombre
// label_txt. Por otra parte decimos que dicho elemento es
// de tipo TextField mediante as [tipo]
this.label_txt = getChildByName("label_txt") as TextField;
label_txt.text = _label;
}

// Metodo para configurar los eventos asociados al boton
private function setEvents():void {

// asociamos un metodo al evento de pulsar el raton
addEventListener(MouseEvent.CLICK, click_handler);

// asociamos un metodo al evento de pasar por encima con el raton
addEventListener(MouseEvent.MOUSE_OVER, over_handler);

// asociamos un metodo al evento salir del boton con el raton
addEventListener(MouseEvent.MOUSE_OUT, out_handler);

}

private function click_handler(event:MouseEvent):void {
//trace('click',this.label_txt.text, this.label_txt.name);
}

private function over_handler(event:MouseEvent):void {
this.label_txt.textColor = 0x000000;
}

private function out_handler(event:MouseEvent):void {
this.label_txt.textColor = 0x999999;
}

}

}

Por Duustito

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2009 07:46 pm
Porqué no te creas una idBoton en la clase botón, y cuando los cargas dinámicamente les asignas la id que les corresponde? Luego en el click del botón accedes a su id y ya sabes que botón han clicado y las miniaturas que tienes que cargar

Por ur!

256 de clabLevel



 

Barcelona

chrome
Citar            
MensajeEscrito el 14 Nov 2009 08:30 pm
ok! lo voy a intentar

en la funcion ButtonStd le envio un nuevo parametro pero me da el siguiente error

1119: Acceso a una propiedad idBoton posiblemente no definida mediante una referencia con tipo estático ButtonStd.


aqui el nuevo codigo de la funcion.. que me falla?

Código ActionScript :

public function ButtonStd(_label:String, idBoton:Number) {
this._label = _label;
this.idBoton = idBoton;
this.setEvents();
}

Por Duustito

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2009 08:33 pm
perdon, no habia declarado la variable.... ya tengo la id guardada de cada boton y al hacer click y un trace de la id me funciona... pero mi duda es como le pasao ahora ese paramotro al codigo principal para poder mostrar sus thumbnails??

Por Duustito

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Nov 2009 05:09 pm
Solucionado gracias ;)

Por Duustito

5 de clabLevel



 

firefox

 

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