Comunidad de diseño web y desarrollo en internet online

Interpolación de Moviemiento

Citar            
MensajeEscrito el 27 Mar 2006 12:55 am

Wenas, quería saber como se puede crear una interpolación de movimiento usando actionscript, es que estoy tengo un MC que se mueve con respecto a otro y va pegando tirones porque le sumo a la posición x,y un número 'grande' con respecto al otro y quiero que no se noten esos tirones,...

Muchas Gracias...


No me expliqué muy bien, mirad más abajo...

Por ARAGAN

18 de clabLevel



 



Ultima edición por ARAGAN el 27 Mar 2006 12:59 pm, editado 1 vez

firefox
Citar            
MensajeEscrito el 27 Mar 2006 03:39 am
no te he comprendido bien lo de los tirones y el entorno pero para hacer una interpolacion de movimiento con actionscript yo utilizo el evento de los movieclips onEnterFrame.

un ejemplo: movemos el mc "cuadro_mc" hacia la posicion en x 50, incrementando cada fram en uno.

Código :

cuadro_mc.onEnterFrame=function{ //Asignamos una funcion al evento onEnterFrame
       if(this._x<50) //Si es menor a la posicion 50 movemos en uno la posicion x
              this._x++;
        else //Una vez en destino eliminamos a la funcion para que no se siga ejecutando
              delete this.onEnterFrame;
};

Por gparis

112 de clabLevel



 

Uruguay

opera
Citar            
MensajeEscrito el 27 Mar 2006 09:23 am
La verdad es que no me he explicado bien, verás estoy empezando un juego de coches en el que el coche se queda quieto y es el mapa lo que se mueve (por que es más grande que el escenario), el caso es que cuando solo tengo en el escenario la carretera parece que el movimiento es fluido, pero cuando añado los edificios (sin cambiar nada de código), patece que estos van pegando saltitos, y cuando se llega a una zona que vuelve a estar sin edificios vuelve a ir bien...

Aqui podeis ver a lo que me refiero...

Sólo la carretera:
http://personales.ya.com/el_trastero/paginas/sin_edif.htm

Y Con edificios (solo algunos)...
http://personales.ya.com/el_trastero/paginas/con_edif.htm

No se si el problema es el que os dije al principio o será otra cosa..., pero lo que tenía pensado era en vez de mover el mapa de la posición x1,y1 a la x2, y2 directamente, hacer una interpolación de moviemiento entre los dos puntos para que no se viese el salto...

este es el código que he puesto:


onClipEvent (load) {
_root.speeda = 0;
_root.angle1 = 270;
}
onClipEvent (enterFrame) {
radian = Math.PI/180*_root.angle1;

if (_root.angle1>360) {division=_root.angle1%360;}
else {division=_root.angle1}

_parent._rotation = _root.angle1;

//lo que hago aqui es sumar 180º al angulo del coche para que si el coche va hacia alante el mapa
//vaya hacia atrás...

radian = Math.PI/180*(_root.angle1+180);

_root.carretera_mc._y+=_root.speeda*Math.sin(radian);
_root.carretera_mc._x+=_root.speeda*Math.cos(radian);

.................


¿ALguna idea....?

Gracias.

Por ARAGAN

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Mar 2006 02:08 pm
El problema es por los trazos, tanto vector le cuesta mucho de mover al Flash, haz la prueba y en vez de que los edificios sean trazos, haz que sea una imagen importada. Verás que entonces todo va mucho más fluido.

La mejor forma de hacer lo que quieres sería dividir el escenario por regiones e ir montando el escenario a medida que avanzas por el, no poner todo el escenario de golpe.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 27 Mar 2006 07:20 pm
Oido Cocina... intentaré poner imagenes importadas en vez de tanto dibujo, pero es que me molaban dibujados asi, supongo que seguiré dibujandolos así y luego los guardaré como gif y los volveré a importar a flash...
Lo de ir montando el escenario por trozos, tendré que estudiar a ver como hacerlo...
Muchas gracias por vuestra ayuda,... seguiré enredando y aprendiendo... cualquier sugerencia siempre será bien venida...

Por ARAGAN

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Mar 2006 04:13 pm
No necetitas reconvertir el fondo. Simplemente convierte el mismo en cache de bits con: tuFondo.cacheAsBitmap
Si el mapa es muy grande y pasa los límites permitidos para el cache.....parte el fondo en varios trozos-MC´s y pegalos.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 29 Mar 2006 07:07 pm
Consejo : Cambia el auto.....jajajajaja ...es demaciado antiguo el modelito... debe ser que por eso es tan lento...., :lol: :lol: :lol:


Saludos :wink:

Por masterman24

41 de clabLevel



Genero:Masculino  

Santiago, Chile.

firefox
Citar            
MensajeEscrito el 29 Mar 2006 07:26 pm
[quote]
hola
se que es salirse un poco del tema
por eso les pido una disculpa,
pero no quiero repetir la misma pregunta,
en el codigo de "interpolacion de movimiento con action script"

cuadro_mc.onEnterFrame=function{
if(this._x<50)
this._x++;

como se puede hacer que vaya mas rapido
sin modificar los fps[/quote]

Por Keith_NT

451 de clabLevel

3 tutoriales

 



Ultima edición por Keith_NT el 30 Mar 2006 04:25 pm, editado 1 vez

México, Estado de México

msie
Citar            
MensajeEscrito el 30 Mar 2006 10:50 am
hombre, si quieres que vaya más rápido no le sumes 1 sumale más... ;)
pero si le sumas mucho de golpe te encontrarás com mi problema que es que en vez de moverse fluidamente parece que vaya pegando pequeños saltitos...
yo estoy probando ahora con la clase tween, para crear ese moviemiento de en medio, por ejemplo si quieres mover un MC de la posición 50 a la 70 pones esto:


import com.joangarnet.motion.Tween; //tienes que bajarte esta archivo .as ...
var move1:Tween = new Tween (cuadro_mc);

var t:Number = 0; //tiempo inicial....
var b:Number = 50; //posición inicial
var c:Number = 20; //le sumas 20
var d:Number =1; //tiempo que tarda en hacerlo en seg , ¿¿?¿cual es la duracion de un frame????
move1.doEasing ("easeInQuad", "_x", t, b, c, d); //el atributo que cabias es _x

Puedes mirar como se hace aqui:
http://www.cristalab.com/tutoriales/58/tutorial-de-ecuaciones-de-easing-y-transiciones-de-flash

Por ARAGAN

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2006 11:30 am
Bueno Keith , usa en lugar de onenterFrame un setInterval asi:



mover(cuadro_mc);

function mover(mc);
clearInterval(ID);
ID=setInterval (this, "mover",5); // cambia el valor 5 si es muy rápido por otro mayor
mc._x<50 ? mc._x++ :clearInterval(ID);

}

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 30 Mar 2006 04:22 pm
Hola de nuevo

Teseo tengo un problema en el codigo que me mostraste

mover(cuadro_mc);

function mover(mc);
clearInterval(ID);
ID=setInterval (this, "mover",5); // cambia el valor 5 si es muy rápido por otro mayor
mc._x<50 ? mc._x++ :clearInterval(ID);

}

al ponerlo me da un error, me pide un {
y no se donde va, y no se por que me marca ese error
la unica manera en que lo pongo y no me marca error es asi, pero

mover(cuadro_mc);
function () { mover(mc);
clearInterval(ID);
ID=setInterval (this, "mover",5);
/* cambia el valor 5 si es muy rápido por otro mayor*/
clearInterval(ID);
mc._x<50? mc._x++ :clearInterval(ID);}


pero entonces ya no hace nada
podrias ayudarme otra vez

en cuanto el mensaje de Aragan
si es cierto la imagen no avanza fluidamente
y por lo otro
lo estoy checando poco a poco, por que para mi aun es un poco complicado
y me llavara mas tiempo

les agradezco y hasta luego
gracias

Por Keith_NT

451 de clabLevel

3 tutoriales

 

México, Estado de México

msie
Citar            
MensajeEscrito el 30 Mar 2006 09:47 pm
lo siento } :oops:
se me escapó el abrir la llave de function : function mover(mc){ (esta llave)

mover(cuadro_mc);

function mover(mc){
clearInterval(ID);
ID=setInterval (this, "mover",5); // cambia el valor 5 si es muy rápido por otro mayor
mc._x<50 ? mc._x++ :clearInterval(ID);
}

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 31 Mar 2006 04:03 pm
Hola

gracias, ahora si funciona perfectamente

hasta luego

Por Keith_NT

451 de clabLevel

3 tutoriales

 

México, Estado de México

msie

 

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