Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/10/2009, 03:43
Jamlet
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 16 años, 6 meses
Puntos: 1
Asignar acciones a clips creados dinamicamente

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
  1. #include "mc_tween2.as"
  2. import mx.transitions.Tween;
  3. var menuAbierto = false;
  4. menu_mc.btn_menu._visible = false
  5.  
  6. menu_mc.btn11.onRelease = function(){
  7.     almacenaImagen(0,540,45);  
  8. }
  9. menu_mc.btn12.onRelease = function(){
  10.     almacenaImagen(1,540,59.5);
  11. }
  12.  
  13. miXML = new XML();
  14. miXML.ignoreWhite = true;
  15. miXML.onLoad = almacenaSeccion;
  16. miXML.load("xml/imagenes.xml");
  17.  
  18. function almacenaSeccion() {
  19.     aSeccion = new Array;
  20.     aSecciones = this.firstChild.childNodes;
  21.     aDatas = new Array;
  22.     vTotal = aSecciones.length;
  23.     for (i=0; i<vTotal; i++) {
  24.         if(aSecciones[i].nodeName == "seccion") {//si el nombre del nodo es seccion...
  25.         aSeccion.push(aSecciones[i].attributes.sNombre);//almacena el atributo pNombre en esta array
  26.         aDatas.push(aSecciones[i].attributes.iD);//almacena el atributo iD en esta array
  27.         }
  28.     }
  29. }
  30.  
  31. function almacenaImagen(opc, posX, posY) {
  32.     aRutaT = new Array;
  33.     aRutaI = new Array;
  34.     aImagen = new Array;
  35.     aImagenes = aSecciones[opc].childNodes;
  36.     aDatasImagen = new Array;
  37.     vTotalImagen = aImagenes.length;
  38.     for (i=0; i<=vTotalImagen; i++){
  39.         if (aImagenes[i].nodeName == "imagen"){
  40.         aImagen.push(aImagenes[i].attributes.iNombre);
  41.         aDatasImagen.push(aImagenes[i].attributes.iD);//almacena el atributo iD en esta array
  42.         aRutaT.push(aImagenes[i].attributes.rutaThumb);
  43.         aRutaI.push(aImagenes[i].attributes.rutaImagen);
  44.         }else{
  45.         crearThumbs(posX, posY);
  46.         moverBotones(opc)
  47.         }
  48.     }
  49. }
  50.  
  51. function crearThumbs(posX, posY){
  52.     vTotalImagen = aImagenes.length;
  53.     for (i=0; i<=vTotalImagen-1; i++){
  54.         // -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
  55.         galeria = aRutaT[i];
  56.         identidad = aDatasImagen[i];
  57.         // -- creo un clip de película vacio
  58.         _root.menu_mc.createEmptyMovieClip("diapo"+identidad, i+200);
  59.         _root.menu_mc.createEmptyMovieClip("bajo"+identidad, i+100);
  60.        
  61.         // --  cargo la imágen el clip vacio
  62.         item = _root.menu_mc["diapo"+identidad];
  63.         item.loadMovie(galeria);
  64.         // -- indico posición x - y
  65.         item._x = posX;
  66.         item._y = posY;
  67.        
  68.         bajo_clip = _root.menu_mc["bajo"+identidad];
  69.         bajo_clip._x = item._x;
  70.         bajo_clip._y = item._y;
  71.         // dibujamos el marco
  72.         with (bajo_clip) {
  73.             beginFill(0xffffff);
  74.             lineStyle(1, 0xEEEEEE, 0);
  75.             lineTo(40, 0);
  76.             lineTo(40, 40);
  77.             lineTo(0, 40);
  78.             lineTo(0, 0);
  79.             endFill();
  80.         }
  81.         // al pinchar sobre el área del marco,
  82.         // mostramos la foto grande con la función
  83.         // verFotoGrande
  84.         _root.menu_mc["bajo"+identidad].onRelease = function() {
  85.             trace(aRutaT[i]);
  86.         };
  87.         //desplazo la posicion del siguiente clip
  88.         posX = posX + 45;
  89.     }
  90. }