Estimados, llevo días machacandome la cabeza con esto, tengo una galería que funciona de maravillas, (el código lo baje de la web) carga tumbs e imágenes desde carpetas sin necesidad de un XML o un TXT, y ahora me surge la necesidad de cambiarle los botones que pasan las imágenes que son 4 componentes buttons que son poco personalisables, la idea es poner botones con animación, pongo el codigo:
Código:
//Importamos las clases
import mx.containers.ScrollPane
import mx.controls.ProgressBar
import mx.controls.Loader
//Declaramos variables
var imagenes_lv:LoadVars = new LoadVars();
var i:Number = new Number(1);
var x:Number = new Number(0);
var y:Number = new Number(0);
var nFot:Number = new Number(1);
var fotAct:Number = new Number(0);
var nPag:Number = new Number(1);
var elTope:Number = new Number(1);
var final:Boolean = new Boolean(false);
var alClicar:Object = new Object();
var alCargar:Object = new Object();
var cargando:Object = new Object();
//Atacheamos los objetos que necesitamos
attachMovie("ProgressBar", "barra", 9998);
attachMovie("ProgressBar", "barraThumbs", 9999);
//Puedes cambiar la forma de mostrar las imágenes, poniendo en vez de un Loader un ScrollPane
//No olvides añadirlo a tu biblioteca
attachMovie("Loader", "imgGrande", _root.getNextHighestDepth());
//attachMovie("ScrollPane", "imgGrande", _root.getNextHighestDepth());
//Empezamos cargando por la primera imagen
imagenes_lv.dirurl = "motos_modelosTB/" + i + ".jpg";
imagenes_lv.parent = this;
imagenes_lv.load(imagenes_lv.dirurl);
//Propiedades del Loader/ScrollPane
imgGrande.setSize(570, 350);
imgGrande.move(232, 4);
imgGrande.addEventListener("complete", alCargar);
imgGrande.addEventListener("progress", cargando);
//Propiedades de la barra de carga
barra._visible = false;
barra.move(216, 141);
barra.label = "Cargando %3%";
barra.mode = "manual";
//Propiedades de la barra de carga de los thumbnails
barraThumbs._visible = false;
barraThumbs.setSize(125, 44);
barraThumbs.move(85, 313);
barraThumbs.indeterminate = true;
barraThumbs.labelPlacement = "up";
//******************************** FUNCIONES ***********************************//
//Función para ir pasando de imagen en imagen
function siguienteImg (i){
barraThumbs._visible = true;
barraThumbs.label = "Cargando imagen " + (i-1);
if (i < 10){
imagenes_lv.dirurl = "motos_modelosTB/" + i + ".jpg";
imagenes_lv.load(imagenes_lv.dirurl);
}
else if (i >= 10){
imagenes_lv.dirurl = "motos_modelosTB/" + i + ".jpg";
imagenes_lv.load(imagenes_lv.dirurl);
}
}
//Función para hacer grande la imagen
function agrandarImg(id){
//Asignamos que vamos a cargar y ponemos la barra de preload
if (id < 10){
imgGrande.contentPath = "motos_modelos/" + id + ".jpg";
}
else if (id >= 10){
imgGrande.contentPath = "motos_modelos/" + id + ".jpg";
}
//Mostramos la barra de carga
barra._visible = true;
fotAct = id;
}
//Función para pasar de página hacia adelante
function paginaAde(){
//Quitamos las imagenes anteriores
for (n=1; n<i; n++){
removeMovieClip(["loader"+n]);
}
//Inicializamos variables y nos situamos en la page siguiente
nPag++;
nFot = 1;
x = 0;
y = 0;
siguienteImg(i);
}
//Función para pasar de página hacia atrás
function paginaAtr(){
//Quitamos las imagenes anteriores
for (n=1; n<i; n++){
removeMovieClip(["loader"+n]);
}
//Inicializamos variables y nos situamos en la page anterior
nPag--;
nFot = 1;
x = 0;
y = 0;
//El índice de la imagen es igual a:
//12 --> Número de imágenes mostradas
//(nPag-1) --> multiplicado por el número de página actual - 1
//más 1, que dará como resultado
//i = (12 * (1-1)) + 1 --> 1 [Nos situamos en imagen 1 si la página es la 1]
//i = (12 * (2-1)) + 1 --> 13 [Nos situamos en imagen 13 si la página es la 2]
//i = (12 * (3-1)) + 1 --> 25 [Nos situamos en imagen 25 si la página es la 3]
//etc...
i = (6 * (nPag-1)) + 1;
siguienteImg(i);
}
//********************************** EVENTOS *********************************//
//Cuando se ha cargado del todo la imagen
alCargar.complete = function(objeto){
barra._visible = false;
imgGrande.setSize(398, 299);
imgGrande.refreshPane();
}
//Monitorizamos la descarga de la imagen
cargando.progress = function(){
barra.setProgress(imgGrande.getBytesLoaded(), imgGrande.getBytesTotal());
}
//Cargamos las thumbnails
imagenes_lv.onLoad = function() {
if (imagenes_lv.loaded == true) {
if (nFot < 7){ //cantidad de imagenes a mostrar -1
//Existe la imagen
attachMovie("Loader", "loader" + i, i);
eval("loader"+i).setSize(48, 36);
eval("loader"+i).move((60 * x + 15), (50 * y + 5));
eval("loader"+i).id = i;
trace(this.dirurl + " / " + eval("loader"+i));
eval("loader"+i).contentPath = this.dirurl;
//Cargamos la imagen en grande y le pasamos el id de la thumbnail
eval("loader"+i).onPress = function(){
agrandarImg(this.id);
}
i++;
nFot++;
//Si no hemos llegado al final seguimos sumando para llegar al tope
if (final == false){
elTope++;
}
//Posiciones de las imagenes
x++;
if (x > 0){ //cantidad de imagenes por fila + 1
y++;
x = 0;
}
siguienteImg(i);
}
else{
//Cuando hemos cargado todas las thumbs quitamos la barra de carga
barraThumbs._visible = false;
}
}
else{
//Si llegamos al final, restamos uno al tope para que no se puedan seguir cargando
//imagenes
if (final == false){
elTope--;
}
final = true;
barraThumbs._visible = false;
}
}
alClicar.click = function(objeto){
if (objeto.target == sigPage_btn){
//Si la imagen actual es menor o igual que el tope, podemos seguir avanzando
if (i <= elTope){
paginaAde();
}
}
else if (objeto.target == antPage_btn){
if (nPag > 1){
paginaAtr();
}
}
else if(objeto.target == sigImg_btn){
//Mientras no lleguemos a la última foto podemos seguir pasando
trace(fotAct + " < " + elTope);
if (fotAct < elTope){
fotAct++;
agrandarImg(fotAct);
}
//Desactivamos el botón si hemos llegado al final
if (fotAct == elTope && final == true){
objeto.target.enabled = false;
}
//Activamos el botón de siguiente imagen
antImg_btn.enabled = true;
//Cambiamos de página si ya hemos visto todas las fotos de la pagina actual
if (fotAct == (nPag * 6 + 1)){
paginaAde();
}
}
else if(objeto.target == antImg_btn){
if (fotAct > 1){
fotAct--;
agrandarImg(fotAct);
}
//Desactivamos el botón si hemos llegado al principio
if (fotAct == 1){
objeto.target.enabled = false;
}
//Activamos el botón de siguiente imagen
sigImg_btn.enabled = true;
//Cambiamos de página si ya hemos visto todas las fotos de la pagina actual
if (fotAct == (nPag-1) * 6){
paginaAtr();
}
}
}
//******************************** LISTENERS ***********************************//
sigPage_btn.addEventListener("click", alClicar);
antPage_btn.addEventListener("click", alClicar);
sigImg_btn.addEventListener("click", alClicar);
antImg_btn.addEventListener("click", alClicar);
el tema es que los botones no tienen acciones designadas (on(release) etc), sino que el código base tiene unos Listeneres que esperan la acción del componente button y ejecuta el avance o el retroceso de las imágenes.
Ya probé creando un botón animado, poniendo el mismo nombre de instancia (sigImg_btn o antImg_btn) pero no logro que listener oiga el click de mi botón, es mas, me pasa lo mismo con en el progressbar, tampoco pude hacer funcionar uno personalizado.
Si alguien me puede orientar un poco se los voy agradecer mucho.