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.