Comunidad de diseño web y desarrollo en internet online

Clase para transiciones de fotos en Flash

Con esta sencilla clase podemos crear fácilmente un pase de fotografías tan fantástico como este.

El código de la clase sería el siguiente:

Código :

class LoopIMG {
   private var ruta:MovieClip;
   private var listaFotos:Array;
   private var tiempo:Number;
   private var contenedor:MovieClip;
   private var paseDeFotos:Number;
   private var foto:Number;
   //-------------------------
   public function LoopIMG(queRuta) {
      ruta = queRuta;
      contenedor = ruta.createEmptyMovieClip("contenedor1", ruta.getNextHighestDepth());
      contenedor.createEmptyMovieClip("contenedor1", contenedor.getNextHighestDepth());
      contenedor.createEmptyMovieClip("contenedor2", contenedor.getNextHighestDepth());
      listaFotos = new Array();
      setTiempo(2000);
      foto = 0;
      //
      contenedor.precarga = new MovieClipLoader();
      contenedor.listener = new Object();
      contenedor.precarga.addListener(contenedor.listener);
      contenedor.listener.onLoadComplete = function(cont:MovieClip) {
         cont.onEnterFrame = function() {
            if (this._alpha < 100) {
               this._alpha += 10;
            } else {
               delete this.onEnterFrame;
            }
         };
      };
   }
   public function setTiempo(queTiempo) {
      tiempo = queTiempo;
   }
   public function setPosicion(queX, queY) {
      contenedor._x = queX;
      contenedor._y = queY;
   }
   public function start() {
      contenedor.contenedor2._alpha = 0;
      contenedor.precarga.loadClip(listaFotos[foto], contenedor.contenedor2);
      paseDeFotos = setInterval(this, "SiguienteImagen", tiempo);
   }
   public function stop() {
      clearInterval(paseDeFotos);
   }
   public function push(queURL) {
      listaFotos.push(queURL);
   }
   //--------------------
   private function SiguienteImagen() {
      (foto < (listaFotos.length - 1)) ? foto++ : foto = 0;
      var cont:MovieClip = contenedor.getInstanceAtDepth(contenedor.getNextHighestDepth() - 2);
      cont.swapDepths(contenedor.getInstanceAtDepth(contenedor.getNextHighestDepth() - 1));
      cont._alpha = 0;
      contenedor.precarga.loadClip(listaFotos[foto], cont);
   }
}

*No hace falta decir que este código hay que insertarlo dentro de un archivo actionscript con el nombre "LoopIMG.as ", y añadirlo a la carpeta de clases AS2...

El uso de la clase es simple:

1- Creamos la instancia de la clase
var fondoLoop:LoopIMG = new LoopIMG(this);

2- Situamos el clip en la posición (x, y) que nos interese
fondoLoop.setPosicion(100, 50);

3- Añadimos las URL de las fotografias que contendrá el pase de fotos
fondoLoop.push("foto1.jpg");
fondoLoop.push("foto2.jpg");
fondoLoop.push("foto3.jpg");
fondoLoop.push("foto4.jpg");
fondoLoop.push("foto5.jpg");


4- Indicamos el tiempo (en milisegundos) de espera entre foto y foto
fondoLoop.setTiempo(3000);

5- Comenzamos la reproducción del pase de fotos
fondoLoop.start();

Y listo!

Hay que decir que podemos parar el pase en cualquier momento con:
fondoLoop.stop()

Espero les sirva...
^^

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate