Comunidad de diseño web y desarrollo en internet online

nextFrame y totalFrames

Citar            
MensajeEscrito el 18 Jun 2009 12:26 am
Buenas, tengo un problema que la verdad es que no comprendo para nada y queria ver si alguien pudiese hecharme una mano, el caso es que tengo el siguiente codigo

Código ActionScript :

fotosBt.addEventListener(MouseEvent.CLICK, fotosClick);

function fotosClick(e:MouseEvent) {
   if (fotosBt.activo) {
      trace("contraer fotos");
      contraerFotos();
      fotosBt.activo=false;
   } else {
      trace("expandir fotos");
      fotosBt.activo=true;
      expandirFotos();
   }
}

function expandirFotos():void {
       slide.visible = true
   var mInt:uint=2000;
   mTimer.addEventListener(TimerEvent.TIMER, fTimer);
   mTimer.start();
   function fTimer(e:TimerEvent):void {
      TweenMax.to(slide,.5, {alpha:0,onComplete:avanzarFoto,delay:0});
   }
}

function avanzarFoto() {

   if (slide.currentFrame<slide.totalFrames) {
      slide.nextFrame();
   } else {
      slide.gotoAndStop(1);
   }
   TweenMax.to(slide, .5, {alpha:1});
}

function contraerFotos():void {
   slide.visible=false;
   slide.gotoAndStop(1)
   mTimer.stop()
}


El funcionamiento es el siguiente, el boton llamado fotosBt hace visibe a slide, que es un movieclip con un determinado numero de fotos y a la vez inicia un Timer que cada 2 segundos a traves de un tween que despues de terminaruna animacion de alpha a 0 llama a avanzarFoto.

Hasta aquí todo perfecto, el problema está en la funcion avanzarFoto ya que esta lo que tiene que hacer es avanzar un frame para cambiar de foto en el caso de que no se encuentre en el ultimo fotograma, que en ese caso lo lleva de nuevo al fotograma 1, acompañado siempre de un tween que cambia el alpha de 0 a 1 de nuevo para que las fotos aparezcan y desaparezcan suavemente siempre. La cuestión es que esto tambien funciona perfecto la primera vez que le apreto al boton fotosBt, pero si le vuelvo a apretar (para ocultar el mc slide) y luego le vuelvo a apretar (again) para mostrar el clip.... lo que sucede es que no hace el nextFrame y ejecuta solo el Tween por lo que se queda el slide siempre en el mismo fotograma apareciendo y desapareciendo...

La verdad es que no entiendo porqué sucede esto, si alguién me pudiese hechar una mano estaria bastante agradecido. Un saludo!

Por riolcrt

5 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Jun 2009 06:49 am
No sé qué puede estar pasando, pero hay algo "extraño" en el código, yo cambiaría un poco porque, cada vez que le das al botón estás añadiendo más y más TimerEvent.TIMER a mTimer. Trato de explicar la parte a cambiar mediante comentarios

Código ActionScript :

fotosBt.addEventListener(MouseEvent.CLICK, fotosClick); 
//el mTimer lo cero aquí
mTimer.addEventListener(TimerEvent.TIMER, fTimer); 
//Al igual que la función fTimer
function fTimer(e:TimerEvent):void { 
      TweenMax.to(slide,.5, {alpha:0,onComplete:avanzarFoto,delay:0}); 
} 
//Esta queda igual
function fotosClick(e:MouseEvent) { 
   if (fotosBt.activo) { 
      trace("contraer fotos"); 
      contraerFotos(); 
      fotosBt.activo=false; 
   } else { 
      trace("expandir fotos"); 
      fotosBt.activo=true; 
      expandirFotos(); 
   } 
} 

//expandirfotos sólo hace un "start"
function expandirFotos():void { 
       slide.visible = true 
   mTimer.start(); 
} 
//resto de código
....

Por Eliseo2

710 de clabLevel



 

firefox

 

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