Comunidad de diseño web y desarrollo en internet online

Botón que repita su acción as3

Citar            
MensajeEscrito el 01 Sep 2009 07:59 am
Buenas, a ver si me podeis hechar una mano por que ando algo perdido.
Estoy haciendo una galería de imágenes que tiene un botón a la izquierda y otro a la derecha, cuando haces rollOver sobre el izquierdo llama a una función que hace que se mueva a derecha, al revés con el otro botón.
El problema es que esta función debe repetirse infinitamente mientras estes en estado rollOver, pero sólo realiza la función una sola vez.
Me imagino que esto se podría hacer con un bucle for o while, pero no se como expresarlo correctamente con as3.

Gracias desde ya :)

Por Dester

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Sep 2009 01:34 pm
Yo meteria la funcion que mueve tu "galeria" en un ENTER_FRAME. Creas una variable por ejemplo "scrolling" de tipo boleano y la pones en false.

En el ROLL_OVER pones scrolling en true y en el ROLL_OUT en false...

Algo así:

Código ActionScript :

boton.addEventListener(MouseEvent.ROLL_OVER, rollOver);
boton.addEventListener(MouseEvent.ROLL_OUT, rollOut);

addEventListener(Event.ENTER_FRAME, onEnterFrame);

var scrolling:Boolean = false;

function onEnterFrame(e:Event) : void
{
   if(scrolling == true)
   {
         tuGaleria.x += 1; 
   }
}

function rollOver(e:Event) : void
{
  scrolling = true;
}

function rollOut(e:Event) : void
{
  scrolling = false;
}


Saludos! :wink:

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

firefox
Citar            
MensajeEscrito el 01 Sep 2009 03:08 pm
Gracias por contestar :D ,
Tu código es 100% funcional, pero no da el efecto que me mandan que tenga :( .
Quieren un efecto easing, que he hecho con la clase TweenMax de la siguiente forma:

Código :

function alante (event:MouseEvent){
   TweenMax.to(root, 0.8, {frame: currentFrame+i, ease:Sine.easeInOut});
}


He metido la animación dentro de tu código así pensando que funcionaría:

Código :

btn_d.addEventListener(MouseEvent.ROLL_OVER, rollOver); 
btn_d.addEventListener(MouseEvent.ROLL_OUT, rollOut); 
 
addEventListener(Event.ENTER_FRAME, onEnterFrame); 
 
var scrolling:Boolean = false; 
 
function onEnterFrame(e:Event) : void 
{ 
   if(scrolling == true) 
   { 
     TweenMax.to(root, 0.8, {frameLabel: "label"+[i], ease:Sine.easeInOut});

   } 
} 
 
function rollOver(e:Event) : void 
{ 
  scrolling = true; 
} 
 
function rollOut(e:Event) : void 
{ 
  scrolling = false; 
} 


Pero no funciona como me esperaba, ya que se mueve sin efecto al hacer rollOver y el efecto lo hace al hacer rollOut.

Lo que busco sería que esa función de TweenMax se repitiera todo el rato mientras se hace rollOut, haciendo que se mueva por la linea de tiempo haciendo el efecto easing.

Sigo investigando, a ver si a alguien más se le ocurre algo.

Muchas GRACIAS! :)
Un saludo

Por Dester

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Sep 2009 09:14 pm
Ahí me pillas :P

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

firefox
Citar            
MensajeEscrito el 01 Sep 2009 10:09 pm
Hola,
el problema está en que al hacer el rollover scrolling se vuelve true, y entonces cada vez que entra en el fotograma crea un nuevo tween, por eso hasta que no haces un rollOut no se ejecuta el tween completo.
Para que se ejecute el tween en el rollOver una sola vez, tienes que poner debajo de TweenMax.to(root, .. esto:
scrolling = false;
Para que se vuelva a repetir el tween, me imagino que TweenMax tendrá un evento equivalente a TweenEvent.MOTION_FINISH, donde puedes volver a crear el tween, y en el rollOut borras ese evento MOTION_FINISH para que no se repita si movemos fuera el mouse.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 02 Sep 2009 08:44 am
Gracias chicos por vuestra ayuda, al final opté por hacerlo con un Timer que al hacer rollOver se activa y se repite cada cierto tiempo que yo le indique, y al hacer rollOut se desactiva y deja de repetirse.

Gracias de nuevo! :D

Por Dester

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 06:20 pm
y si en lugar de que sea on roll over/out quiero que cuando den click active la animación de regreso?, si le cambio el roll por el click solo lo hace una vez :(

Por rocklando

4 de clabLevel



 

firefox

 

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