Comunidad de diseño web y desarrollo en internet online

aumentar el tiempo en tips "Efecto de desvanecimiento o fade

Citar            
MensajeEscrito el 28 Dic 2008 07:12 pm
Creo que este tip puede ayudarme, porque lo que necesito es que haya una pausa, con fade incluido entre un clip y otro, el código que llama a un prototype es este:

Código :

//MC donde cargaremos las diferentes secciones.
_root.createEmptyMovieClip("conte", 9999);
//MC "controlador" [ya veras porque]
_root.createEmptyMovieClip("controler", 9998);
//MCL
var lm = new MovieClipLoader();
//variable necesaria
_root.estado = 0;
//************************************************
// ATENCION A ESTA LINEA , explicacion abajo!
//************************************************
lm.loadClip("carpeta/primerclip.swf", "_root.conte");
function cargamc(mc) {
   //lo dejamos todo limpio
   delete _root.controler.onEnterFrame;
   delete _root.conte.onEnterFrame;
   _root.estado = 0;
   _root.conte.fader(100, 0);
   //este enterframe solo controla que a terminado una parte de la transicion para mandar a cargar la otra
   _root.controler.onEnterFrame = function() {
      //si se ha ido el que estaba mandar a llamar al otro
      if (_root.estado == 1) {
         _root.estado++;
         lm.loadClip(mc, "_root.conte");
      }
      //si el que  viene ya tiene alpha 100 que elimine este controlador
      if (_root.estado == 3) {
         _root.estado++;
         delete this.onEnterFrame;
      }
   };
   //enterframe
}
MovieClip.prototype.fader = function(ini, fin) {
   //dos parametros, alpha de inicio y de final
   fax = ini;
   this._alpha = ini;
   this._visible = 1;
   //aki decidimos si sumamos alfa o la restamos
   if ((fin-ini)<=0) {
      goes = 1;
      xaf = -8;
   } else {
      goes = 2;
      xaf = +8;
   }
   //creamos un enterframe para tener que ejecutar la funcion UNA SOLA vez
   this.onEnterFrame = function() {
      this._alpha = fax;
      fax += xaf;
      //estos dos condicionales comprueba que se a llegado a los limites =)
      if (this._alpha<=fin && goes == 1) {
         delete this.onEnterFrame;
         _root.estado++;
      }
      if (this._alpha>=fin && goes == 2) {
         delete this.onEnterFrame;
         _root.estado++;
      }
   };
};
lm.onLoadInit = function(tm) {
   _root.conte.fader(0, 100);
};


yo usé esto pero miren lo oque ocurre: triplew.monicadiaz.com.ar/muestra/fade-foto.html como veréis no le da tiempo al primer clip que ya pasa al segundo. Una ayuda por favor!!!!!!

Por al_di

65 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 01 Ene 2009 11:51 pm
hola, tu link no funciona, ese codigo solo sirve apara hacerle fade a un solo clip(no has puesto el codigo que usa la funcion cargamc), aunque si quieres hacer una pausa, debe ser aqui:

Código ActionScript :

if ((this._alpha<=fin && goes == 1)||(this._alpha>=fin && goes == 2)) {
      delete this.onEnterFrame;
     _root.estado++;
     intervalo = setInterval(cargamc, "carpeta/clipsiguiente.swf", 5000);
}


Si quieres reducir el tiempo del fade, osea, que dure mas o menos, debes modificar el incremento:

Código ActionScript :

 if ( (fin-ini) <= 0 ) {
      goes = 1;
      xaf = -12;
   } else {
      goes = 2;
      xaf = +12;
   }


Bueno, espero te sirva esto de algo, para mi gusto tu codigo se puede mejorar bastante :P . Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 02 Ene 2009 12:44 am
Gracias por la ayuda. Mira, aprovecho para hacerte una pregunta nueva. No sé si conoces el tuto de Chininet llamado "clase para transiciones de fotos en flash" o algo similar. Se trata de una clase. Anduve buscando desesperadamente cómo hacer de manera virtual (sin pulsar ningún botón) que, una vez que termine la secuencia de fotos (que son 15) me abra una URL. De tanto buscar encontré una solución pero no termina de convencerme porque creo que falta algo en el script. Pues, si bien me lleva, antes de hacerlo vuelve a la primera foto (o sea que sigue haciendo un loop) queda feo. Aquí está clase:

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(fotos) {
      ruta = fotos;
      contenedor = ruta.createEmptyMovieClip("contenedor1", ruta.getNextHighestDepth());
      contenedor.createEmptyMovieClip("contenedor1", contenedor.getNextHighestDepth());
      contenedor.createEmptyMovieClip("contenedor2", contenedor.getNextHighestDepth());
      listaFotos = new Array();
      setTiempo(3000);
      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(segundos) {
      tiempo = segundos;
   }
   public function setPosicion(queX, queY) {
      contenedor._x = 0;
      contenedor._y = 0;
   }
   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() {
      if (foto<(listaFotos.length-1)) {
         foto++;
      } else {
         foto = 0;
         getURL("http://www.monicadiaz.com.ar/hmc/home.html");
         clearInterval(paseDeFotos);
         delete paseDeFotos;
      }
      var cont:MovieClip = contenedor.getInstanceAtDepth(contenedor.getNextHighestDepth()-2);
      cont.swapDepths(contenedor.getInstanceAtDepth(contenedor.getNextHighestDepth()-1));
      cont._alpha = 0;
      contenedor.precarga.loadClip(listaFotos[foto], cont);
   }
}

lo que se le modificó al código original está al final de todo, en la función privada, segunda línea, antes decia así :

Código :

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);
   }


Pero si abres la dirección que figura allí, verás que algo fallla. Sabrías corregirlo? Desde ya te agradezco tu aporte. Y estaré inmensamente agradecida si logras harme una mano con esto. FELÍZ 2009

Por al_di

65 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 02 Ene 2009 06:34 am
Pense que ese tuto era de Zguillez, ese link da el error 404(No encontrado) y creo que debe ser asi:

Código ActionScript :

 private function SiguienteImagen() {
      if (foto<(listaFotos.length-1)) {
         foto++;
         var cont:MovieClip = contenedor.getInstanceAtDepth(contenedor.getNextHighestDepth()-2);
         cont.swapDepths(contenedor.getInstanceAtDepth(contenedor.getNextHighestDepth()-1));
         cont._alpha = 0;
         contenedor.precarga.loadClip(listaFotos[foto], cont);
      } else {
         this.stop();
         getURL("http://www.monicadiaz.com.ar/hmc/home.html");
      }
   }

Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 03 Ene 2009 09:12 am
Bueno, aqui la modificacion que se realizo al script de Zguillez, modificacion que lo hace mejor para este caso y posiblmente a algun otro le sirva cuando busque: "carga de varios swf con transicion fade y desplazamiento de un texto incluido dentro de los swf que al final de las transiciones carge una url", pues aqui esta la solucion :P suerte a todos.

Código ActionScript :

import mx.transitions.Tween;
import mx.transitions.easing.*;

class LoopIMG 
{
   private var contenido_mc:MovieClip;
      
   private var lista_arr:Array;
   private var tiempo_nmb:Number;
   
   private var idIntervalo_mc:Number;
   private var index_nmb:Number;
   private var loadCount_nmb:Number;
   
   private var url_str:String;
   private var retardo_nmb:Number;
   
   private var transicion_nmb:Number;
   //-------------------------    
   public function LoopIMG(fotos) {
      this.lista_arr = new Array();
      this.tiempo_nmb = 3;
      this.retardo_nmb = 3;
      this.url_str = "";
      this.transicion_nmb = 2;
      this.contenido_mc = fotos.createEmptyMovieClip("contenido_mc", fotos.getNextHighestDepth());
   }
   
   public function set transicion( segundos:Number )
   {
      this.transicion_nmb = segundos;
   }
   public function get transicion():Number
   {
      return this.transicion_nmb;
   }   
   public function set tiempo( segundos:Number )
   {
      this.tiempo_nmb = segundos;
   }
   public function get tiempo():Number
   {
      return this.tiempo_nmb;
   }
   public function set retardo( segundos:Number )
   {
      this.retardo_nmb = segundos;
   }
   public function get retardo():Number
   {
      return this.retardo_nmb;
   }
   public function set url( aux:String )
   {
      this.url_str = aux;
   }
   public function get url():String
   {
      return this.url_str;
   }
   public function push( auxUrl:String, xfin:Number, durmover:Number, duralpha:Number ):Void
   {
      durmover = (durmover === undefined)? 5 : durmover ;
      duralpha = (duralpha === undefined)? 6 : duralpha ;
      this.lista_arr.push ({url:auxUrl, fin:xfin, secmover:durmover, secalpha:duralpha});
   }
   public function load( Void ):Void
   {
      this.loadCount_nmb = -1;
      for( var i in this.lista_arr )
      {
         var aux:MovieClip = this.contenido_mc.createEmptyMovieClip( "clip" + i, Number(i) );
         var auxLoader:MovieClipLoader = new MovieClipLoader();
         auxLoader.addListener( this );
         auxLoader.loadClip( this.lista_arr[i].url, aux );
         this.lista_arr[i].clip = aux;
      }
   }
   public function stop( Void ):Void
   {
      clearInterval( this.idIntervalo_mc );
   }
   public function start( Void ):Void
   {
      this.stop();
      this.index_nmb = 0;
      this.onNext();
      this.idIntervalo_mc = setInterval(this, "onNext", this.tiempo_nmb * 1000);
   }
   
   private function onNext( Void ):Void
   {
      if( this.index_nmb <= this.loadCount_nmb )
      {
         var aux:Object = this.lista_arr[index_nmb];
         aux.clip.index = this.index_nmb - 1;
         this.animar( aux.clip.texto_mc, aux.fin, aux.secmover, aux.secalpha );
         this.fade( aux.clip, this.transicion_nmb, 1 ).onMotionFinished = function(o)
         { 
            o.obj._parent["clip" + o.obj.index]._visible = false;
         };
         aux.clip._visible = true;
         this.index_nmb++;
      }
      else if( this.index_nmb > this.loadCount_nmb && this.loadCount_nmb >= 0)
      {
         this.fade( this.lista_arr[this.index_nmb-1].clip , 5, -1 );
         this.stop();
         this.idIntervalo_mc = setInterval(this, "irUrl", this.retardo_nmb * 1000);
      }
   }
      
   private function onLoadInit( target_mc:MovieClip ):Void
   {
      this.loadCount_nmb++;
      target_mc.texto_mc._alpha = 100;
      target_mc.texto_mc._visible = true;
      target_mc._visible = false;
   }
   
   private function irUrl( Void ):Void
   {
      this.stop();
      getUrl( this.url_str );      
   }
   
   private function animar( target_mc:MovieClip, finx:Number, secmover:Number, secalpha:Number):Void 
   {
      (new Tween(target_mc, "_x", Regular.easeOut, target_mc._x, finx, secmover, true));
      (this.fade(target_mc, secalpha, -1)).onMotionFinished = function(o) 
      {
         o.obj._visible = false;
      };      
   }
   
   private function fade( target_mc:MovieClip, duration:Number, direction:Number ):Tween
   {
      return new Tween(target_mc, "_alpha", Regular.easeOut, (direction < 0)?100:0, (direction < 0)?0:100, duration, true);
   }
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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