Hola a todos. Os explico mi problema para ver si podéis ayudarme a solucionarlo. Estoy creando una galería de imágenes. Al pinchar en el nombre de cada seccion se crean miniaturas debajo suya. Mi intención es que al pinchar en esa miniatura se visualice la imagen en grande.
El problema: Cuando le añado acciones a los clips que forman las miniaturas no sé como hacer para que cada uno guarde la ruta de la imagen a la que corresponde. Dicho de otro modo, cuando pincho en cualquiera de las miniaturas, todas me devuelven la ruta de la última miniatura que se ha creado.
A ver si podéis indicarme una manera de solucionarlo o algún ejemplo de como crear clips dinamicamente a partir de un array y asignarle una variable con un valor diferente a cada uno para ver si consigo adaptarlo.
Muchas gracias.
Código actionscript:
Ver original#include "mc_tween2.as"
import mx.transitions.Tween;
var menuAbierto = false;
menu_mc.btn_menu._visible = false;
menu_mc.btn11.onRelease = function(){
almacenaImagen(0,540,45);
}
menu_mc.btn12.onRelease = function(){
almacenaImagen(1,540,59.5);
}
miXML = new XML();
miXML.ignoreWhite = true;
miXML.onLoad = almacenaSeccion;
miXML.load("xml/imagenes.xml");
function almacenaSeccion() {
aSeccion = new Array;
aSecciones = this.firstChild.childNodes;
aDatas = new Array;
vTotal = aSecciones.length;
for (i=0; i<vTotal; i++) {
if(aSecciones[i].nodeName == "seccion") {//si el nombre del nodo es seccion...
aSeccion.push(aSecciones[i].attributes.sNombre);//almacena el atributo pNombre en esta array
aDatas.push(aSecciones[i].attributes.iD);//almacena el atributo iD en esta array
}
}
}
function almacenaImagen(opc, posX, posY) {
aRutaT = new Array;
aRutaI = new Array;
aImagen = new Array;
aImagenes = aSecciones[opc].childNodes;
aDatasImagen = new Array;
vTotalImagen = aImagenes.length;
for (i=0; i<=vTotalImagen; i++){
if (aImagenes[i].nodeName == "imagen"){
aImagen.push(aImagenes[i].attributes.iNombre);
aDatasImagen.push(aImagenes[i].attributes.iD);//almacena el atributo iD en esta array
aRutaT.push(aImagenes[i].attributes.rutaThumb);
aRutaI.push(aImagenes[i].attributes.rutaImagen);
}else{
crearThumbs(posX, posY);
moverBotones(opc)
}
}
}
function crearThumbs(posX, posY){
vTotalImagen = aImagenes.length;
for (i=0; i<=vTotalImagen-1; i++){
// -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
galeria = aRutaT[i];
identidad = aDatasImagen[i];
// -- creo un clip de película vacio
_root.menu_mc.createEmptyMovieClip("diapo"+identidad, i+200);
_root.menu_mc.createEmptyMovieClip("bajo"+identidad, i+100);
// -- cargo la imágen el clip vacio
item = _root.menu_mc["diapo"+identidad];
item.loadMovie(galeria);
// -- indico posición x - y
item._x = posX;
item._y = posY;
bajo_clip = _root.menu_mc["bajo"+identidad];
bajo_clip._x = item._x;
bajo_clip._y = item._y;
// dibujamos el marco
with (bajo_clip) {
beginFill(0xffffff);
lineStyle(1, 0xEEEEEE, 0);
lineTo(40, 0);
lineTo(40, 40);
lineTo(0, 40);
lineTo(0, 0);
endFill();
}
// al pinchar sobre el área del marco,
// mostramos la foto grande con la función
// verFotoGrande
_root.menu_mc["bajo"+identidad].onRelease = function() {
trace(aRutaT[i]);
};
//desplazo la posicion del siguiente clip
posX = posX + 45;
}
}