Comunidad de diseño web y desarrollo en internet online

Cómo hago una galería de Imágenes Flash con un menú en XML

Citar            
MensajeEscrito el 17 Ago 2008 01:06 am
Hola a todos, ya he visto muchos tutoriales acerca de galerías flash con tumbnails y descripción, pero en esta ocasión necesito crear una que en vez de tener la tira de tumbnails tenga un menú que también se administre desde el archivo XML y que cada botón llame una foto con su respectiva descripción.
Tengo el siguiente código, pero lo único que consigo es que me salga un solo botón y no hace nada:
El botón es un movie clip con un campo de texto dinámico y un botón dentro de el.

XML

Código :

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
    <pic>
        <image>imagen1.jpg</image>
        <titulo>TITULO 1</titulo>
        <caption>foto1</caption>
        <boton>cliente 1</boton>
    </pic>
    <pic>
        <image>imagen2.jpg</image>
        <titulo>TITULO 2</titulo>
        <caption>foto2</caption>
        <boton>cliente 2</boton>
    </pic>
    <pic>
        <image>imagen3.jpg</image>
        <titulo>TITULO 3</titulo>
        <caption>foto3</caption>
        <boton>cliente 3</boton>
    </pic>    
</images>


FLASH

Código :

function loadXML(loaded) {
   if (loaded) {
      xmlNode = this.firstChild;
      image = [];
      referencia = [];
      description = [];
      boton = [];
      total = xmlNode.childNodes.length;
      for (i=0; i<total; i++) {
         image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
         referencia[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
         description[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
         boton[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
      }
      firstImage();
   } else {
      content = "file not loaded!";
   }
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
///////////////////////////////////// 
listen = new Object();
listen.onKeyDown = function() {
   if (Key.getCode() == Key.LEFT) {
      prevImage();
   } else if (Key.getCode() == Key.RIGHT) {
      nextImage();
   }
};
Key.addListener(listen);
previous_btn.onRelease = function() {
   prevImage();
};
next_btn.onRelease = function() {
   nextImage();
};
///////////////////////////////////// 
var p = 0;
this.onEnterFrame = function() {
   var filesize = picture.getBytesTotal();
   var loaded = picture.getBytesLoaded();
   preloader._visible = true;
   if (loaded != filesize) {
      preloader.preload_bar._xscale = 100*loaded/filesize;
   } else {
      preloader._visible = false;
      if (picture._alpha<100) {
         picture._alpha += 10;
      }
   }
};
function nextImage() {
   if (p<(total-1)) {
      p++;
      if (loaded == filesize) {
         picture._alpha = 0;
         picture.loadMovie(image[p], 1);
         desc_txt.text = description[p];
         ref_txt.text = referencia[p];
         picture_num();
      }
   }
}
function prevImage() {
   if (p>0) {
      p--;
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      desc_txt.text = description[p];
      ref_txt.text = referencia [p];
   }
}
function firstImage() {
   if (loaded == filesize) {
      picture._alpha = 0;
      picture.loadMovie(image[0], 1);
      desc_txt.text = description[0];
      ref_txt.text = referencia [0];
      picture_num();
      botones();
   }
}

function botones() {
attachMovie("item_mc", "item_mc"+i, i);
_root["item_mc"+i]._x = 0;
_root["item_mc"+i]._y = 20*i;
_root["item_mc"+i].etiqueta_txt.text = boton[p];
_root["item_mc"+i].Link = Link;
_root["item_mc"+i].Rectangulo_btn.onRelease=function(){
p = this.pictureValue-1;
         nextImage(); };
}


Esta es una fusión que hice de dos tutoriales que vi, uno acerca de las galerías y otro acerca de los menús, se que está un poco desordenado y caotico, pero soy casi nuevo en esto.
De antemano muchas gracias por su valiosa ayuda :wink:

Por wilson_x

15 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Ago 2008 01:33 am
No crees un movie con un botón dentro, crea solamente un movieclip, a estos se le puede dar eventos de botón.

Mirando por encima puedo ver que cuando se lee el XML haces un ciclo para guardar los datos en unos arreglos llamados "image", "referencia", "description", "boton" (Todos los datos los puedes guardar en un solo Arreglo bidimensional o en un objeto que es más sencillo) bueno al tener todos los datos guardados y después que se terminó el ciclo llamas a una función llamada "firstImage" esta función varía los parámetros y las propiedades de ciertos objetos y después llama a otra llamada "botones" la cual inserta un movie de la biblioteca llamado "item_mc" y le cambia varias propiedades, después llamas a una función llamada "nextImage" que lo que hace también es cambiar unas propiedades y después llamas a una función llamada "picture_num" que no la encuentro.

Bueno según mi descripción habrás podido notar que tu código hace exactamente lo que dices que hace inserta un solo movie de la biblioteca. Si quisieras que insertara tantos como tiene nodos el XML deberías en algún momento a la hora de insertar los clips hacer un ciclo con la cantidad de items.

Hasta el momento está bastante complicado tu código para hacer solamente eso que deseas, te aconsejo que crees pautas de que quieres hacer y vayas poco a poco programando lo que quieres, si mezclas dos tutoriales diferentes te pasará esto que te está sucediendo.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 19 Ago 2008 02:27 pm
Hola, gracias por tu respuesta, tienes razón, de esta manera está muy difícil crear esta galería, voy a empezar de cero a ver cómo me va.

Por wilson_x

15 de clabLevel



 

msie7

 

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