Comunidad de diseño web y desarrollo en internet online

Ayuda con integración de xml en galería.

Citar            
MensajeEscrito el 19 Oct 2009 06:15 pm
Hola todos. Estoy un poco desesperado y mis pocos conocimientos de actionscript no me ayudan. Ya se que para muchos lo que pido es obvio pero para mi es un mundo. Os cuento:

Siguiendo un tutorial me he montado una galería con xml pero necesito ayuda en 2 cuestiones, y será recompensada con mil millones de gracias. ;D

1º Necesito que el contenido del movieclip donde se cargan las imágenes salga alineado al centro absoluto.

2º Necesito que al cargar el primera imagen del xml solo aparezca el next_btn y en la última que solo aparezca previous_btn. Y si solo hay 1 imagen en el xml que no aparezca ninguno de los 2.

Os adjunto el código del actionscript y del xml


Código ActionScript :

function loadXML(loaded) {
   if (loaded) {
      xmlNode = this.firstChild;
      image = [];
      description = [];
      total = xmlNode.childNodes.length;
      for (i=0; i<total; i++) {
         image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
         description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
      }
      firstImage();
   } else {
      content = "Archivo no cargado";
   }
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("ejemplo.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();
};
/////////////////////////////////////
p = 0;
this.onEnterFrame = function() {
   filesize = picture.getBytesTotal();
   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];
         picture_num();
      }
   }
}
function prevImage() {
   if (p>0) {
      p--;
      picture._alpha = 0;
      picture.loadMovie(image[p], 1);
      desc_txt.text = description[p];
      picture_num();
   }
}
function firstImage() {
   if (loaded == filesize) {
      picture._alpha = 0;
      picture.loadMovie(image[0], 1);
      desc_txt.text = description[0];
      picture_num();
   }
}
function picture_num() {
   current_pos = p+1;
   pos_txt.text = current_pos+" / "+total;
}



Código XML :

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
      <pic>
        <image>imagenes/imagen1.jpg</image>
        <caption>texto de comentario</caption>
    </pic>
 <pic>
        <image>imagenes/imagen2.jpg</image>
        <caption>texto de comentario</caption>
    </pic>
 <pic>
        <image>imagenes/imagen3.jpg</image>
        <caption>texto de comentario</caption>
    </pic>

Por TribalFun

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 19 Oct 2009 08:39 pm
Para la visibilidad de los botones agrega:

Código ActionScript :

function picture_num() { 
   current_pos = p+1; 
  previous_btn._visible = (current_pos>1)
   next_btn._visible = (current_pos<total)
   pos_txt.text = current_pos+" / "+total; 
}


Busca el MovieClip de nombre de instancia picture y muévelo adonde necesites

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Oct 2009 08:45 pm
Genial!!!!!!!!!! Muchas gracias de verdad.

Ya solo falta que alguien me ayude con lo de alinear las imágenes.

Por TribalFun

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 20 Oct 2009 11:14 am
Hola TribalFun,

no sé si he entendido bien lo que quieres hacer. ¿Quieres que cuando el _mc "picture" tenga la imagen cargada, éste se centre dentro de su contenedor (otro _mc o el Stage)?

Si es así, quizá te sirva ésta solución:

Código ActionScript :

this.onEnterFrame = function() { 
   filesize = picture.getBytesTotal(); 
   loaded = picture.getBytesLoaded(); 
   preloader._visible = true; 
   if (loaded != filesize) { 
      preloader.preload_bar._xscale = 100*loaded/filesize; 
   } else { 
      preloader._visible = false; 
      if (picture._alpha<100) { 
         /////////////////////////////
         //centrar picture
         picture._x = (Stage.width - picture._width)/2;
         picture._y = (Stage.height - picture._height)/2;
         /////////////////////////////
         picture._alpha += 10; 
      } 
   } 
}; 


Si en vez de estar en el Stage, está dentro de algun _mc, sólo tienes que cambiar "Stage.width" por "nombreDelMc._width" y lo mismo con el _height.

Un saludo :)

Por flashstuff

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Oct 2009 11:25 am
Hola graciasss por contestar.

No me referia al Stage, me refería a que el contenedor de las imágenes (un mc que está fijo y no quiero que se mueva) haga que las imágenes que aparecen dentro aparezcan alineadas al centro absoluto, porque se cargaran tanto imágenes verticales como horizontales.

De todas formas si no me equivoco me vale con hacer lo 2º que comentas no?

Por TribalFun

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Oct 2009 11:33 am
En principio podría servirte, pero depende. Si el contenedor absoluto, aunque no se mueva, no tiene ningún contenido salvo las imágenes que cargue, no vas a poder centrarlas porque no tienen ninguna referencia con la que alinearse. En ese caso, deberías tener algun _mc transparente de un tamaño "x" dentro del _mc contenedor absoluto. Un ejemplo:

Código ActionScript :

//contenedorAbsoluto tiene dentro un _mc transparente llamado "base".

contenedorAbsoluto.createEmptyMovieClip("picture",contenedorAbsoluto.getNextHighestDepth());
contenedorAbsoluto.picture.loadMovie("imagen.jpg");

//Una vez esté cargada la imagen

contenedorAbsoluto.picture._x = (contenedorAbsoluto.base._width - contenedorAbsoluto.picture._width)/2;
contenedorAbsoluto.picture._y = (contenedorAbsoluto.base._height- contenedorAbsoluto.picture._height)/2;


Esto es una posibilidad. Seguramente haya otras mejores.

Un saludo!

Por flashstuff

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Oct 2009 11:41 am
Es verdad llevas razón, el contenedor no tiene un tamaño determinado pero si puedo crear manualmente un objeto transparente en un capa de fondo con unas dimensiones determinadas (el alto máximo de las verticales por el ancho máximo de las horizontales no?

Por TribalFun

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Oct 2009 11:38 pm
Bueno, pues sigo en problemas. Resulta que el contenedorabsoluto de las imágenes es el mc con nombre de instancia picture. Es decir, cuando decimos picture._x y picture._y estamos determinado el sitio en el que se situará el mc picture en el stage pero no el sitio que debe ocupar "lo que se carge dentro de picture" no?

Ahí ya me he perdido...

Que puedo hacer?


Gracias por las melestias que os tomais los "sabios" con los novatos.

Por TribalFun

5 de clabLevel



 

firefox

 

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