Comunidad de diseño web y desarrollo en internet online

Suavidad en los moviemintos

Citar            
MensajeEscrito el 03 Sep 2009 03:44 pm
Hola, tengo un mc que realiza un movimiento de desplazamiento vertial por el escenario, pero este desplazamiento no lo controlo por interpolación, sino con AS3 modificando la la propiedad miMC.y incrementandola con un while hasta que llegue al valor X. Por ejmeplo, si miMC.y comienzza valiendo 0 al final de las iteraciones valdrá, por ejemplo, 500.

Para que este moviemiento no se realice de golpe uso una variable de tipo Timer con su correspondiente Listener, con lo cual el movimiento es gradual.

Lo que ocurre es que noto que le falta suavidad, el escenario va a 24fps y la animación tiene alrrededor de 4 ség.

Existe alguna manera que haga que dicho movoemoento se más fluido, más suave.

Un saludo.

Por Perico19

39 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Sep 2009 05:18 pm
Hay diferentes formas de hacer animaciones con AS3 yo en lo personal no gusto mucho del timer uso mas bien un EnterFrame, pero en fin si parece que tu objeto de repente aprece en otro lado de la pantalla es porq le estas cambiando muy bruscamente sus coordenadas,ej:

Si se encuentra en la coordenada (10,10) y se la cambias a (10,100) se vera como que desaparecio y aparecio en otro lugar para evitar esto incrementa poco a poco la posicion de tu clip.

Aqui te dejo unos ejemplos

Código ActionScript :

//mi clip a mover se llama "clip" (que original)
//Posicion Inicial (10,10), Posicion Final (10,100)

//Velocidad en Y
var vely:Number=3;

//Lo suscribo a un enterframe
clip.addEventListener(Event.ENTER_FRAME,Mover);

function Mover(e:Event){
//el target del evento sera mi clip

e.target.y+=vely;//Lo muevo

//Checo la posicion final
if(e.target.y>=100){
//En caso de llegar o sobrepasar la posicion final deseada dejo de moverlo y lo coloco en su posicion final
e.target.removeEventListener(Event.ENTER_FRAME,Mover);
e.target.y=100;
}
}

//********************************


//Lo puedes moevr con un timer exactamente igual 
//cada 400 milisegundos lo muevo eso puede variar
var timer:Timer=new Timer(400,0);
timer.addEventListener(TimerEvent.TIMER,Mover);

function Mover(e:TimerEvent){
//el target del evento sera el timer asi que muevo clip directamente

clipt.y+=vely;//Lo muevo

//Checo la posicion final
if(clip.y>=100){
//En caso de llegar o sobrepasar la posicion final deseada dejo de moverlo y lo coloco en su posicion final
timer.removeEventListener(TimerEvent.TIMER,Mover);
timer.stop();
clip.y=100;
}
}

//********************************
//Lo puedes mover con un Tween
//No estoy seguro de la sintaxis checa bien la documentacion para ver todos los parametros
var tween:Tween=new Tween(clip,"y",RegularEase.easeIn,10,100,4,true);

//Arriba si te fijas le indicas el clip a mover en este caso "clip" la propiedad que se modifica,tipo de aceleracion
,posicion inicial,posicion final y el tiempo que dura...esta es muy buena forma checala. 



Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Sep 2009 07:27 pm
Lo del Tween es una gran solucion lo que puedo acotar es si necesitas mas opciones de movimiento, deberias utilizar el Twenner , es una libreria que instalas y es mucho mas poderosa que el Tween.

puedes bajarlo de

http://code.google.com/p/tweener/

Por xngar

3 de clabLevel



 

firefox

 

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