Esta clase, permite generar de forma fácil un sistema de transiciones de fotografias. Este es un ejemplo:
Su funcionamiento es muy simple. La clase genera dos MovieClips contenedores en los que coloca la fotografía actual y la potografía posterior, y carga también un SWF que contiene la animación de la mascara. Esta mascara la aplica al MovieClip contenedor haciendo así es efecto de transicion de una foto a la otra.
Este sistema nos permite generar las animaciones de transición como archivos SWF externos e independientes, pudiendo tener una libreria de transiciones y eligiendo la que queramos para cada transición de fotos.
Un ejemplo de animación de transición sería este:
La clase:
- import mx.utils.Delegate;
- //
- class img.ImgTransition
- {
- private var ruta:MovieClip;
- private var clip:MovieClip;
- private var foto:String;
- private var foto_up:MovieClip;
- private var foto_down:MovieClip;
- private var mascara:MovieClip;
- private var intervalo:Number;
- private var ejecucion:Boolean;
- //----------------------------
- public function ImgTransition(qRuta:MovieClip, qFoto:String, qX, qY)
- {
- ruta = qRuta;
- clip = ruta.createEmptyMovieClip("ImgTransition", ruta.getNextHighestDepth());
- foto_down = clip.createEmptyMovieClip("foto_down", clip.getNextHighestDepth());
- foto_up = clip.createEmptyMovieClip("foto_up", clip.getNextHighestDepth());
- mascara = clip.createEmptyMovieClip("mascara", clip.getNextHighestDepth());
- foto_up.createEmptyMovieClip("mc", 1);
- foto_down.createEmptyMovieClip("mc", 1);
- mascara.createEmptyMovieClip("mc", 1);
- foto = qFoto;
- loadMovie(qFoto, foto_up.mc);
- loadMovie(qFoto, foto_down.mc);
- clip._x = qX;
- clip._y = qY;
- ejecucion = false;
- //
- }
- //----------------------------
- public function transition(qFoto:String, qMascara:String, qDuracion:Number):Void
- {
- if (!ejecucion)
- {
- if (qFoto != foto)
- {
- foto = qFoto;
- //
- var precarga:MovieClipLoader = newMovieClipLoader();
- var listener:Object = new Object();
- listener.onLoadInit = Delegate.create(this, xnLoadInit1);
- precarga.addListener(listener);
- precarga.loadClip(qFoto, foto_up.mc);
- mascara.swf = qMascara;
- mascara.duracion = qDuracion;
- foto_up._visible = false;
- }
- }
- }
- private function xnLoadInit1()
- {
- var precarga2:MovieClipLoader = new MovieClipLoader();
- var listener2:Object = new Object();
- listener2.onLoadInit = Delegate.create(this, xnLoadInit2);
- precarga2.addListener(listener2);
- precarga2.loadClip(mascara.swf, mascara.mc);
- }
- private function xnLoadInit2()
- {
- foto_up.setMask(mascara);
- foto_up._visible = true;
- intervalo = setInterval(this, "endTransition", mascara.duracion * 1000);
- ejecucion = true;
- }
- //----------------------------
- private function endTransition():Void
- {
- loadMovie(foto, foto_down.mc);
- foto_up.setMask(null);
- unloadMovie(mascara.mc);
- clearInterval(intervalo);
- ejecucion = false;
- }
- //----------------------------
- }
Su uso en el .fla es este:
- import img.ImgTransition;
- var foto:ImgTransition = new ImgTransition(this, "foto1.jpg", 10, 10);
- //
- bot1.onRelease = function()
- {
- foto.transition("foto1.jpg", "mascara1.swf", 5);
- };
- bot2.onRelease = function()
- {
- foto.transition("foto2.jpg", "mascara2.swf", 3);
- };
- bot3.onRelease = function()
- {
- foto.transition("foto3.jpg", "mascara3.swf", 2);
- };
- bot4.onRelease = function()
- {
- foto.transition("foto4.jpg", "mascara4.swf", 3);
- };
- bot5.onRelease = function()
- {
- foto.transition("foto5.jpg", "mascara5.swf", 2);
- };
No hay comentarios:
Publicar un comentario