Comunidad de diseño web y desarrollo en internet online

Ayuda con Snippet Galeria Miniaturas con imagenes grandes

Citar            
MensajeEscrito el 13 Feb 2009 07:24 am
Hola un saludo a todos, necesito la ayuda de ustedes porfavor.
necesito hacer una galeria en flash y xml, los "tumbs" deben de estar en forma horizontal y que al hacerles clik carguen la imagen grande.

esta galeria se trata de una exposicion de muebles, osea presentan sus productos, y cada semana necesita mostrar las nuevas fotos, tenia entendido hacerlas con *.swf externos; osea darles clik a "cada fecha" en el swf principal y que llame al swf que corresponda.

pero quisas exista alguna otra manera mas practica de hacerlas,

porfavor espero me ayuden.
gracias LongeVie por tu atencion

Por miguel_fox

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2009 11:03 am
Aquí mismo en Clab hay una galería de fotos en la sección tutoriales

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Feb 2009 01:32 pm
Hola miguel_fox, pues tienes varias opciones de hacerlo, como dice solisarg existe una galeria de fotos en los tutoriales de Clab, aunque bueno, acabo de modificar el Snippet que deje posteado en Aportes, puede que sea lo que necesitas, aqui te dejo una captura:



El codigo modificado es el siguiente, voy a trabajar para explicarlo mejor y publicar la segunda version del snippet en los aportes mientras tanto si tienes dudas, postealas aqui.

Código ActionScript :

//--Definir variables inciales --//
var lista_xml:XML = new XML();  
lista_xml.ignoreWhite = true;  
var cargador_mcl:MovieClipLoader = new MovieClipLoader();
cargador_mcl.addListener(this);

var slideColor:Number = 0xFFFFFF;//Color del slider
var slideClip:String = "Slider_id";//id de la biblioteca del slider

var img_w:Number = 110;//Ancho de las imagenes  
var img_h:Number = 110;//Alto de las imagenes  
var img_n:Number = 4;//Numero de imagenes que se mostraran  
var img_s:Number = 10;//Separacion entre las imagenes  
var gal_x:Number = Stage.width - 510;//Posicion en X de la galeria  
var gal_y:Number = Stage.height - 140;//Posicion en Y de la galeria  

var url_target:String = "_self";//Target donde se cargan las urls

var lienzo_bln:Boolean = true;//Cargar el contenido en un Lienzo
var lnz_x:Number = 0;//Posicion en X del Lienzo
var lnz_y:Number = 35;//Posicion en Y del Lienzo
var lnz_w:Number = Stage.width;//Ancho del Lienzo
var lnz_h:Number = Stage.height - 170;// Alto del Lienzo

//-- Crear la galeria --//  
var galeria:MovieClip = this.createEmptyMovieClip("galeria", 120);
galeria.createEmptyMovieClip("miniaturas", 0);  
galeria.createEmptyMovieClip("mascara", 1);  
setArea( galeria.mascara, (img_w + img_s) * img_n, img_h );
galeria.miniaturas.setMask( galeria.mascara );  
galeria._x = this.gal_x;  
galeria._y = this.gal_y;

//-- Crear el lienzo --// 
var lienzo:MovieClip;
if( lienzo_bln )
{
   //Creamos los clips
   lienzo = this.createEmptyMovieClip("lienzo", 119);
   lienzo.createEmptyMovieClip("bound_mc", 0);
   lienzo.createEmptyMovieClip("inner_mc", 1);
   //Creamos un TextField donde se despliega el porcentaje cargado
   lienzo.createTextField("texto_txt", 2, lnz_w / 2 - 50, lnz_h / 2 - 11, 100, 22);
   //Le damos formato
   var format:TextFormat = new TextFormat();
   format.align = "center"
   format.bold = true;
   format.font = "Arial";
   format.color = 0xc6c6c6;
   format.size = 9;
   lienzo.texto_txt.setNewTextFormat( format );
   lienzo.texto_txt.selectable = false;
   //Dibujamos los limites
   setArea( lienzo.bound_mc, lnz_w, lnz_h );
   //Posicionamos
   lienzo._x = lnz_x;
   lienzo._y = lnz_y;
   //Funcion para cargar imagenes
   this.cargarLienzo = function( url:String ):Void
   {
      this.cargador_mcl.loadClip( url, this.lienzo.inner_mc );
   };
}

//-- Crear ScrollBar --//
//Creamos el slider desde la biblioteca
var slider:MovieClip = galeria.attachMovie(slideClip, "slider", 2);
//Si no fue creado
if( slider == undefined )
{
   //Lo creamos
   slider = galeria.createEmptyMovieClip("slider", 2);  
   //Lo dibujamos
   setArea( slider, this.img_w/2, 20, slideColor, 100 );
}
//Variables
slider.owner = this;
//Posicionamos
slider._y = this.img_h + 5;  
//Declaramos eventos
slider.onPress = function( Void ):Void  
{  
   //Al presionar incia el arrastre
   this.startDrag(false,0,this._y,this._parent.mascara._width - this._width - this.owner.img_s, this._y);
}; 
slider.onRelease = slider.onReleaseOutside = function( Void ):Void
{  
   //Al soltar se detiene el arrastre
   this.stopDrag();  
}; 
slider.onEnterFrame = function( Void ):Void
{
   //Calculos para recorrer las miniaturas respecto a la posicion de scrollBar
   this._parent.miniaturas._x = this._x / (this._parent.mascara._width - this._width) * (this._parent.miniaturas._width - (this._parent.mascara._width - this._parent._parent.img_s)) * -1;
}; 
 
//-- Carga XML --//  
lista_xml.onLoad = function( ok:Boolean ):Void
{  
   if( ok )//Si se cargo correctamente  
   {  
      crearImagenes();  
   }  
   else trace("No se pudo cargar el XML");  
};
lista_xml.load("lista.xml");  
  
//-- Crear las imagenes --//  
function crearImagenes( Void ):Void  
{  
   //Variables auxiliares  
   var aux:MovieClip;  
   var img_aux:String;  
   var url_aux:String;  
   for( var i:Number = 0, l:Number = lista_xml.firstChild.childNodes.length; i < l; i++)  
   {  
      //Creamos la miniatura
      aux = this.crearImagen( i );
      //Parseo de XML
      url_aux = lista_xml.firstChild.childNodes[i].attributes.url_xml;
      img_aux = lista_xml.firstChild.childNodes[i].attributes.nom_xml;
      //Si existe la url entonces
      if( url_aux != undefined && url_aux != "" )
      {
            aux.bound_mc.url = url_aux;
         //al presionar
            aux.bound_mc.onRelease = function( Void ):Void  
            {
            this._parent.presionado( this.url );
            };
      }
      //Cargamos la miniatura
      cargador_mcl.loadClip( img_aux, aux.thumb_mc );  
   }
}  
function crearImagen( index:Number ):MovieClip  
{  
   //Creamamos los clips
   var clip:MovieClip = this.galeria.miniaturas.createEmptyMovieClip("mc_" + index, index);  
   clip.createEmptyMovieClip("bound_mc", 1); 
   clip.createEmptyMovieClip("thumb_mc", 0);
   clip.owner = this;
   clip.selected = false;
       
   //Posicion
   clip.index = i;
   clip._x = (this.img_w + this.img_s) * index;
       
   //Fondo transparente del boton    
   setArea( clip.bound_mc, img_w, img_h );
   
   //Funcion que colorea el clip bound_mc, si se esta seleccionado
   clip.setSelected = function( aux:Boolean )
   {
      if( aux )
      {
         this.owner.setArea( this.bound_mc, this.bound_mc._width, this.bound_mc._height, this.owner.slideColor, 20 );
         //todos los demas los colocamos en false
         for(var i in this._parent)
         {
            if( this._parent[i].selected )
            {
               this._parent[i].setSelected( false );
               break;
            }
         }
      }
      else
      {
         setArea( this.bound_mc, this.bound_mc._width, this.bound_mc._height );
      }
      this.selected = aux;
   }
   //Funcion invocada cuando se presiona el clip bound_mc
   clip.presionado = function( url:String )
   {
      //Si se usa lienzo
      if( this.owner.lienzo_bln )
      {
         //Nos colocamos seleccionados
         this.setSelected(true);
         //Cargamos la imagen en el Lienzo
         this.owner.cargarLienzo( url )
      }
      //Si no
      else
      {
         //Cargamos la url en el navegador
         getURL( url, this.owner.url_target );
      }
   };
   return clip;
}  
  
//-- Eventos del Cargador --//
function onLoadInit( target:MovieClip ):Void
{//Clip accesible
   //Centramos la imagen
   target._x = (target._parent.bound_mc._width - target._width ) /  2;
   target._y = (target._parent.bound_mc._height - target._height ) /  2;
   //Efecto fadeIn( _alpha 0 -> 100 )
   target._alpha = 0;
   target.onEnterFrame = function( Void )
   {
      if( (this._alpha += 10) >= 100 ) delete this.onEnterFrame;
   };
}
function onLoadComplete( target:MovieClip ):Void
{//Clip cargado
   //Desaparece el cargador
   lienzo.texto_txt.text = "";   
}
function onLoadProgress( target:MovieClip, l:Number, t:Number ):Void
{//Clip cargandose
   //Si se esta cargando el lienzo
   if( target == lienzo.inner_mc )
   {
      //Desplegamos el porcentaje cargado
      lienzo.texto_txt.text = "Cargando... " + Math.floor(l / t * 100);      
   }
}

//-- Utilerias --// 
function setArea( clip:MovieClip, w:Number, h:Number, color:Number, alpha:Number ):Void
{
   //Dibujamos un cuadrado
   clip.clear();
   clip.beginFill( color?color:0, alpha?alpha:0 );
   clip.moveTo( 0, 0 );
   clip.lineTo( w, 0 );
   clip.lineTo( w, h );
   clip.lineTo( 0, h );
   clip.endFill();   
}


El xml que uso es este:

Código XML :

<?xml version="1.0" encoding="UTF-8"?>  
<galeria>  
   <img nom_xml="MCF/IMG/_01_t.jpg" url_xml="MCF/IMG/_01.jpg" />  
   <img nom_xml="MCF/IMG/_02_t.jpg" url_xml="MCF/IMG/_02.jpg" />  
   <img nom_xml="MCF/IMG/_05_t.jpg" url_xml="MCF/IMG/_05.jpg" /> 
   <img nom_xml="MCF/IMG/_03_t.jpg" url_xml="MCF/IMG/_03.jpg" />  
   <img nom_xml="MCF/IMG/_04_t.jpg" url_xml="MCF/IMG/_04.jpg" />  
</galeria>  


Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 13 Feb 2009 02:29 pm

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 13 Feb 2009 06:42 pm
Muchas gracias por tu ayuda lo probe y funciona de lo mejor. ahora tengo unas dudas y espero que me ayudes a aclararlas:

1.- Si se puede cambiar el color del Scroll ahi todo bien, pero al cambiarlo tambien se cambia del mismo color al thumbs cuando le damos click, no se si se pudiera poner un color "x" al scroll, los thumbs que esten como oscurecidos y al seleccionarlos que se vean en su color normal.

2.- las medidas de las imagenes son 110x110 en los thumbs, y los imagenes grandes 470x220 ahi todo bien, quisiera saber cuales son las dimenciones adecuadas para todo el *.swf, yo jugando con las posciciones lo puse 470x420 no se si habre hecho correcto.
espero tu respuesta
y Muchas Gracias por tu ayuda y por la colaboracion a "CRISTALAB"

Por miguel_fox

31 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Feb 2009 09:00 pm
Las posiciones y el tamaño es deacuerdo a tus necesidades y el tamaño de tus imagenes, yo use las predeterminadas 450 550 para el documento, pero bueno en su caso cuando crees la galeria y la incorpores por ejemplo en una web, ya seria mas la cuestion del diseño de la pagina, la ventaja de esta galeria es que se puede ubicar donde sea y puede medir lo que tu desees.

para cambiar el color del scroll que se vean todos oscuros intenta con esto

Código ActionScript :

//Fondo transparente del boton        
setArea( clip.bound_mc, img_w, img_h, 0x000000, 50 ); 

el parametro "0x000000" es el color negro y el parametro "50" es la transparencia, asi dara la impresion de que esta oscurecido y luego en la funcion setSelected ya tu le mueves los colores, recuerda que son los dos ultimos parametros de la funcion setArea. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

msie7
Citar            
MensajeEscrito el 26 Mar 2010 08:36 pm
Hola Amigo!
Felicitaciones y muchas gracias por este excelente tutorial!
Lo he aplicado y me funciona a la perfección, ahora se me presentó un problema.
Requiero cargar esta Galeria dentro de un MC, lo que estoy haciendo es copiar y pegar tal cual el codigo completo en la linea de tiempo dentro del MC. Tuve que ajustar la posición X y Y para que quedara donde lo requeria, todo perfecto. Pero :shock: :( no se desliza, simplemente queda estatico.
Creo que es por los niveles en que se carga, pero no sé como o donde modificarlo para que funcione.
Puedes echarme una mano?
Muchisimas gracias! :lol:

Por anibrimo84

29 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 27 Mar 2010 01:21 am
Hola, ya no recuerdo bien como esta esta cosa, pero hasta donde me quede, solo basta que identifiques estas 2 lineas:

Código ActionScript :

var galeria:MovieClip = this.createEmptyMovieClip("galeria", 120);

Código ActionScript :

lienzo = this.createEmptyMovieClip("lienzo", 119);


y las cambies por esto:

Código ActionScript :

var galeria:MovieClip = this.TUCLIP.createEmptyMovieClip("galeria", 120);

Código ActionScript :

lienzo = this.TUCLIP.createEmptyMovieClip("lienzo", 119);


Donde TUCLIP es el nombre de instancia del movieclip en donde quieres que esten, recuerda que es mejor tener todo el código en linea de tiempo principal para no perderse a la hora de corregir errores :P

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 27 Mar 2010 04:24 am
Hola Amigo!
Funcionaaaa! :lol:
Muchisimas gracias!
Ahora tengo otro problema, y disculpa la molestia :oops:

Si necesito cargar dos galerias en la misma pelicula pero en diferentes MC, como hago? :(
Intenté pegando dos veces el codigo y modificando las listas XML que cargan, pero nada :( si carga uno no carga el otro.
Necesito que cargue la primera galeria en el MC "s1" y la otra en el MC "s2", no importa el orden de aparición ni nada de eso, solo que aparezcan alli!

Agradezco enormemente si puedes ayudarme!
Mucho éxito, un abrazo y nuevamente gracias! :lol:

Por anibrimo84

29 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 29 Mar 2010 03:19 am
ahi esta mas difcil... en ese caso, el codigo si va dentro de cada movieclip, asegurate de no repetir variables y tampoco niveles de profundidad.

Te recomiendo abras un nuevo post en el foro de as2 para que este aporte quede limpio.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 05 Abr 2010 03:12 am
Hola LongeVie!
Muchas gracias por tu respuesta, abrí otro tema aqui:
http://foros.cristalab.com/usar-dos-snippet-galeria-en-diferentes-mc-ayuda-t86336/#545126

Espero puedas ayudarme, desde ya muchisimas gracias por todo! Que Dios te lo multiplique! Un abrazo desde Venezuela! :lol:

Por anibrimo84

29 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 18 Abr 2010 10:41 pm
LongeVie disculpa la molestia! :( ya abri el post, puedes echarme una mano?
Muchisimas gracias!

Por anibrimo84

29 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 14 Abr 2012 02:09 pm
Ante todo, muchísimas gracias por tu aporte LongeVie. Me fue de mucha utilidad.
Quisiera pedirte ayuda con este tema. Lo que necesito es que apenas se cargue la galería se muestre la primera imagen ampliada, así no queda en blanco hasta que hago clic en la miniatura.
¿Podrías ayudarme?

Muchas gracias nuevamente.

Por malegria

0 de clabLevel



 

firefox

 

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