Comunidad de diseño web y desarrollo en internet online

Galería de imágenes, efecto slide

Citar            
MensajeEscrito el 11 Dic 2009 05:05 pm
Tengo una galería de imágenes que carga un número indeterminado de ellas,
En el área de thumbnails tengo hueco para 6 miniaturas, ¿cuá es la mejor forma para que muestre solo 6 pero mediante unos botones avanzar / retroceder me vaya mostrando la miniaturas sucesivas?

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 11:57 am
La función que carga los thumbnails es:

Código ActionScript :

// Creamos una función que colocará los thumbs y asignara propiedades a cada uno
function cargaThumbs(){   

   for(var i:uint;i<infoFoto.length();i++){

      // Se crea un objeto Foto por cada thumbnail 
      itemFoto=new Foto();
      
      urlGaleria = new URLRequest("img/gallery/thumb/"+infoFoto[i].@img);   // Recogemos la url de los thumbnails
      var foto:Loader=new Loader(); // Creamos un cargador para las fotos
      //foto.width = 600;
      foto.load(urlGaleria); // Cargamos los thumbnails en el cargador

      itemFoto.x=5+98*i; // Colocamos los thumbnails
      itemFoto.y=16;
      
      // Asignamos un nombre a cada thumbnail, los nombres se definen por la posición del nodo de cada imagen en el XML
      itemFoto.name=String(i);

      // Hace que se muestre la mano al pasar sobre las miniaturas
      itemFoto.buttonMode=true;
      itemFoto.mouseChildren=false;
   
      
      itemFoto.addEventListener(MouseEvent.CLICK,cargaBig); // Se añade un listener a cada miniatura para cargar su imagen grande correspondiente
      itemFoto.addChild(foto); // Añadimos a escena los thumbnails
      filaThumb.addChild(itemFoto);
      
      trace(filaThumb.numChildren-1);
      
   }

   if (filaThumb.name=="6"){
      this.visible = false;
   
   }
}


La última parte del código intenta que sólo cargue 6 thumbnails, pero no funciona, ¿una ayudita?

Código ActionScript :

   if (filaThumb.name=="6"){
      this.visible = false;
   
   }


Gracias

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 12:14 pm
Lo solucioné del siguiente modo:

Código ActionScript :

   if (filaThumb.numChildren-1>6){
      filaThumb.getChildAt(7).visible= false;
   
   }


¿Cómo hago para que no se muestren desde getChildAt(7) hasta el final de filaThumb.numChildren?

Gracias

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 12:28 pm
Con esta función logro mostrar únicamente 6 miniaturas

Código ActionScript :

   for (var j:uint=7; filaThumb.numChildren-1; j++){
      filaThumb.getChildAt(j).visible= false;   
   }


funciona correctamente pero me da este error:

Código ActionScript :

RangeError: Error #2006: The supplied index is out of bounds.


¿Cómo lo eliminaría?

Gracias

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 01:45 pm
Creo que seria mas facil si creas un sprite del tamaño de los 6 thumbs que quieres mostrar, este esprite lo haces una mascara , y solo con incremenetos o decrementos al contenedor de tus fotos podrias mostrar las siguientes o anteriores thumbs.


Jonathan.

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 15 Dic 2009 01:56 pm
Me olvidaba, los incremento o decrementos logico serian en el eje X de tu contenedor.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 15 Dic 2009 05:46 pm
Llevo mirándolo durante la tarde y no consigo lograr que la máscara aparezca, tengo un mc con una imagen que será el marco de los thumbnails que llevo a escena. Dentro de este mc creo un cuadrado que será la máscara y dentro añado los thumbnails:

Código ActionScript :

// XML DE DATOS DE GALERÍA 
var listadoFoto:XML; // Declaramos el objeto XML
var infoFoto:XMLList = new XMLList(); // Creamos el objeto que almacenará los nodos del XML
var urlGaleria:URLRequest = new URLRequest("xml/galeria.xml"); // Declaramos la ruta del XML
var contenedorGaleria:URLLoader = new URLLoader(); // Creamos el contenedor para el XML
var tituloFoto:String // Variable que almacenará el nombre de la foto
var itemFoto:Foto; // Declaramos un objeto Foto que permitirá traer el mc item_lista a escena y aplicarle propiedades
contenedorGaleria.load(urlGaleria); // Cargamos en el contenedor los datos del XML
var filaThumb:Thumbs = new Thumbs(); // Creamos una variable para el objeto Thumbs
var indice:uint = 0; // Variable 
filaThumb.x=83;
filaThumb.y=494;
addChild(filaThumb); // Añadimos el objeto Thumbs a escena

// Dibujar un cuadrado y añadirlo a la lista de visualización.
var square:Sprite = new Sprite();
square.graphics.lineStyle(1, 0x000000);
square.graphics.beginFill(0xff0000);
square.graphics.drawRect(0, 0, 600, 100);
square.graphics.endFill();
filaThumb.addChild(square);

contenedorGaleria.addEventListener(Event.COMPLETE, cargado);

function cargado(e:Event){
   listadoFoto = XML(contenedorGaleria.data); // Cargamos en el objeto XML los datos del archivo XML
   infoFoto = listadoFoto.children(); // Cargamos los nodos del XML en el XMLList;
   cargaThumbs(); // Iniciamos la función que carga los thumbnails
}

// Creamos una función que colocará los thumbs y asignara propiedades a cada uno
function cargaThumbs(){   

   for(var i:uint;i<infoFoto.length();i++){

      // Se crea un objeto Foto por cada thumbnail 
      itemFoto=new Foto();
      
      urlGaleria = new URLRequest("img/gallery/thumb/"+infoFoto[i].@img);   // Recogemos la url de los thumbnails
      var foto:Loader=new Loader(); // Creamos un cargador para las fotos
      //foto.width = 600;
      foto.load(urlGaleria); // Cargamos los thumbnails en el cargador

      itemFoto.x=5+98*i; // Colocamos los thumbnails
      itemFoto.y=16;
      
      // Asignamos un nombre a cada thumbnail, los nombres se definen por la posición del nodo de cada imagen en el XML
      itemFoto.name=String(i);

      // Hace que se muestre la mano al pasar sobre las miniaturas
      itemFoto.buttonMode=true;
      itemFoto.mouseChildren=false;
   
      
      itemFoto.addEventListener(MouseEvent.CLICK,cargaBig); // Se añade un listener a cada miniatura para cargar su imagen grande correspondiente
      itemFoto.addChild(foto); // Añadimos a escena los thumbnails
      square.addChild(itemFoto);

   }
// Hacer que el objeto square sea una máscara del objeto itemFoto.
itemFoto.mask = square; 


De esta forma, cuanod paso sobre el áre donde deben estar los thumbails me aparece una mano para cada thumb y si pulso se me carga la imagen en grande en su lugar correspondiente. Si comento la línea:

Código ActionScript :

// Hacer que el objeto square sea una máscara del objeto itemFoto.
itemFoto.mask = square; 


Se ve el square y los thumbs pero no hace el efecto máscara, viéndose todos los thumbs en lugar de los 6 que necesito.

Por tementa

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2009 10:38 pm
Estudie un poco el codigo y parece ser que el error esta en que square le agregas los itemFoto, square debe ser un sprite que no contiene nada , solo es un simple rectangulo que va hacer mascara al "CONTENEDOR" de todos tus itemFoto, vamos ahora no tengo el flash a la mano pero si Flex en ubuntu , te pongo un ejemplo para que te auxilies, para este ejemplo no he cargado ninguna imagen solo usare unos cuadrados que serviran de guia.

Código ActionScript :

package {
   import flash.display.Sprite;

   [SWF(width="600", height="400", frameRate="30", backgroundColor="0xffffff")]
   public class Main extends Sprite
   {   
      private var _masker:Sprite;//mascara.
      private var _thumb:Sprite;//contendor de la foto en mi caso solo sera un dibujo de un cuadrado.
      private var _conThumbs:Sprite;//contenedor de los _thumb.
      
      public function Main()
      {
         //instanciamos y agregamos al display list el contenedor de los thumbs..
         _conThumbs = new Sprite();
         _conThumbs.x = 130;
         _conThumbs.y = 175;
         addChild(_conThumbs);
         
         //generamos a travez de un loop n numero de thumb..
         for(var i:uint=0; i<8; i++)
         {
            _thumb = makeThumb(0x333333, 50, 50);
            _thumb.x = (_thumb.width+10) * i;
            //parca calcular el tamaño de la mascara nos podemos auxiliar de un trace
            trace("para el thumb " + (i+1) + " el ancho de la mascara es = " + (_thumb.x + _thumb.width));
         }
         
         //instanciamos nuestro sprite que servira de mascara
         _masker = new Sprite();
         _masker.graphics.beginFill(0xff0000);
         //le pasamos el ancho que obtuvimos, y el alto seria igual al height del contenedor
         _masker.graphics.drawRect(0,0,350, _conThumbs.height);
         _masker.graphics.endFill();
         _masker.x = _conThumbs.x;
         _masker.y = _conThumbs.y;
         addChild(_masker);
         
         //le aplicamos la mascara al contenedor 
         _conThumbs.mask = _masker;
      }
      
      private function makeThumb(color:uint, width:Number, height:Number):Sprite
      {
         var item:Sprite = new Sprite();
         item.graphics.beginFill(color);
         item.graphics.drawRect(0, 0, width, height);
         item.graphics.endFill()
         _conThumbs.addChild(item);
         return item;
      }
   }
}



Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome

 

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