Foros del Web » Creando para Internet » Flash y Actionscript »

problemas con direccion de la animacion

Estas en el tema de problemas con direccion de la animacion en el foro de Flash y Actionscript en Foros del Web. Bueno, se que el titulo no aclara muchas cosas, pero mi problema es dificil de resumir Estoy haciendo un mini estanque con unas carpas a ...
  #1 (permalink)  
Antiguo 11/05/2011, 12:16
Avatar de kaze_chan  
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
problemas con direccion de la animacion

Bueno, se que el titulo no aclara muchas cosas, pero mi problema es dificil de resumir

Estoy haciendo un mini estanque con unas carpas a modo de mascotas para una pagina web

de momento tengo las carpas en el escenario añadidas con codigo y se mueven, el problema es que nadan de lado y en diagonal....

aunque mi problema principal es que quiero que siempre miren al sentido en el que nadan como estas de [URL="http://abowman.com/google-modules/fish/"]aqui[/URL]

que programacion es necesaria para conseguir eso?
lo estoy haciendo con ActionScript 3.0

cuando delimite las paredes del estaque puedo poner un preview de mis carpas, de momento se salen del escenario ^^U

=^^= =^^= =^^=
  #2 (permalink)  
Antiguo 11/05/2011, 13:15
Avatar de esdebon  
Fecha de Ingreso: agosto-2008
Ubicación: México
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 18
Respuesta: problemas con direccion de la animacion

Sin ver el código no se bien cual es el problema, pero me imagino que se puede solucionar con una condición, supongo que los peces se mueven con código en un enterframe...

podrias poner en el enterframe una condición, donde si la posicion del paso (del enterframe) anterior, es mayor a la del paso actual implica que el pez esta nadando hacia la izquierda y vice versa, seria algo asi como:

//////esto declarado fuera de cualquier función y dos variable para cada pez
var pezAnterior:Number;
var pezActual:Number;

///////esto dentro de la función llamada por el enterFrame

if(pezAnterior>pezActual){
pez.scaleX=-1;
}else{
pez.scaleX=1;
}
pezAnterior=pezActual;
pezActual=pez.x;

////////////

para hacer mas general la función en vez de que diga pez, se peude usar e.target, donde e es el nombre del evento que se recibe en la función.


__________________
Mi sitio: http://www.fluocode.com
  #3 (permalink)  
Antiguo 11/05/2011, 13:25
Avatar de kaze_chan  
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
Respuesta: problemas con direccion de la animacion

mis carpas nadan mas o menos libres, aun no acabe de darles todas las ordenes que quiero, pero de momento es algo asi:

en vez de usar array he nombrado a todas, por que son 3 y distintas en aspecto entre ellas

Código Javascript:
Ver original
  1. var k_01 = new koi();
  2.     k_01.x = aleatorio(0,181);
  3.     k_01.y = aleatorio(0,181);
  4.     k_01.velx = aleatorio(1,5);
  5.     k_01.vely = aleatorio(1,5);
  6.     k_01.dirx = (1-(Math.floor(Math.random()*2)*2));
  7.     k_01.diry = (1-(Math.floor(Math.random()*2)*2));
  8.     addChild(k_01);
  9. var k_02 = new koi2();
  10.     k_02.x = aleatorio(0,181);
  11.     k_02.y = aleatorio(0,181);
  12.     k_02.velx = aleatorio(1,5);
  13.     k_02.vely = aleatorio(1,5);
  14.     k_02.dirx = (1-(Math.floor(Math.random()*2)*2));
  15.     k_02.diry = (1-(Math.floor(Math.random()*2)*2));
  16.     addChild(k_02);
  17. var k_03 = new koi3();
  18.     k_03.x = aleatorio(0,181);
  19.     k_03.y = aleatorio(0,181);
  20.     k_03.velx = aleatorio(1,5);
  21.     k_03.vely = aleatorio(1,5);
  22.     k_03.dirx = (1-(Math.floor(Math.random()*2)*2));
  23.     k_03.diry = (1-(Math.floor(Math.random()*2)*2));
  24.     addChild(k_03);
  25.    
  26.    
  27. stage.addEventListener(Event.ENTER_FRAME, mover)
  28.  
  29. function mover(e:Event):void
  30. {
  31.     k_01.x += k_01.velx * k_01.dirx;
  32.     k_01.y += k_01.vely * k_01.diry;
  33.     k_02.x += k_02.velx * k_02.dirx;
  34.     k_02.y += k_02.vely * k_02.diry;
  35.     k_03.x += k_03.velx * k_03.dirx;
  36.     k_03.y += k_03.vely * k_03.diry;
  37. }

=^^= =^^= =^^=
  #4 (permalink)  
Antiguo 11/05/2011, 13:45
Avatar de esdebon  
Fecha de Ingreso: agosto-2008
Ubicación: México
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 18
Respuesta: problemas con direccion de la animacion

Quita esto:


Código action script:
Ver original
  1. stage.addEventListener(Event.ENTER_FRAME, mover)
  2.  
  3. function mover(e:Event):void
  4. {
  5.     k_01.x += k_01.velx * k_01.dirx;
  6.     k_01.y += k_01.vely * k_01.diry;
  7.     k_02.x += k_02.velx * k_02.dirx;
  8.     k_02.y += k_02.vely * k_02.diry;
  9.     k_03.x += k_03.velx * k_03.dirx;
  10.     k_03.y += k_03.vely * k_03.diry;
  11. }

y pon esto:


Código action script:
Ver original
  1. k_01.addEventListener(Event.ENTER_FRAME, mover)
  2. k_02.addEventListener(Event.ENTER_FRAME, mover)
  3. k_03.addEventListener(Event.ENTER_FRAME, mover)
  4.  
  5. function mover(e:Event):void
  6. {
  7.     e.target.x+= e.target.velx * e.target.dirx;
  8.     e.target.y+= e.target.vely * e.target.diry;
  9.     if(e.target.dirx<0){
  10.         e.target.scaleX=-1;
  11.     }else{
  12.         e.target.scaleX=1;
  13.     }
  14. }

__________________
Mi sitio: http://www.fluocode.com
  #5 (permalink)  
Antiguo 11/05/2011, 14:12
Avatar de kaze_chan  
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
Respuesta: problemas con direccion de la animacion

nada ú.ù

parece que les gusta nadar de lado, voy a ver si hago los limites del estanque y despejo un poco la cabeza
que, no se como, siempre quiero hacer las cosas faciles y las acabo complicando

gracias por la ayuda ^^

=^^= =^^= =^^=
  #6 (permalink)  
Antiguo 11/05/2011, 15:19
Avatar de esdebon  
Fecha de Ingreso: agosto-2008
Ubicación: México
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 18
Respuesta: problemas con direccion de la animacion

Condiciones:

- Las carpas deben estar en el centro de su movieClip.

- Procura que tu funcion aleatorio() de un valor dentro de la pecera, si no se traban los peces.

Código actionscript:
Ver original
  1. var k_01 = new koi();
  2.     k_01.x = aleatorio(0,181);
  3.     k_01.y = aleatorio(0,181);
  4.     k_01.velx = aleatorio(1,5);
  5.     k_01.vely = aleatorio(1,5);
  6.     k_01.dirx = (1-(Math.floor(Math.random()*2)*2));
  7.     k_01.diry = (1-(Math.floor(Math.random()*2)*2));
  8.     addChild(k_01);
  9. var k_02 = new koi2();
  10.     k_02.x = aleatorio(0,181);
  11.     k_02.y = aleatorio(0,181);
  12.     k_02.velx = aleatorio(1,5);
  13.     k_02.vely = aleatorio(1,5);
  14.     k_02.dirx = (1-(Math.floor(Math.random()*2)*2));
  15.     k_02.diry = (1-(Math.floor(Math.random()*2)*2));
  16.     addChild(k_02);
  17. var k_03 = new koi3();
  18.     k_03.x = aleatorio(0,181);
  19.     k_03.y = aleatorio(0,181);
  20.     k_03.velx = aleatorio(1,5);
  21.     k_03.vely = aleatorio(1,5);
  22.     k_03.dirx = (1-(Math.floor(Math.random()*2)*2));
  23.     k_03.diry = (1-(Math.floor(Math.random()*2)*2));
  24.     addChild(k_03);
  25.    
  26.  
  27. k_01.addEventListener(Event.ENTER_FRAME, mover)
  28. k_02.addEventListener(Event.ENTER_FRAME, mover)
  29. k_03.addEventListener(Event.ENTER_FRAME, mover)
  30.  
  31. var limiteDerecho:Number=stage.stageWidth;
  32. var limiteIzquierdo:Number=0;
  33. var limiteArriba:Number=0;
  34. var limiteAbajo:Number=stage.stageHeight;
  35.  
  36. function mover(e:Event):void
  37. {
  38.     e.target.x+= e.target.velx * e.target.dirx;
  39.     e.target.y+= e.target.vely * e.target.diry;
  40.     if(e.target.dirx<0){
  41.         e.target.scaleX=-1;
  42.     }else{
  43.         e.target.scaleX=1;
  44.     }
  45.     ///////////Limites
  46.     if((e.target.x+e.target.width/2)>limiteDerecho || (e.target.x-e.target.width/2)<=limiteIzquierdo){
  47.         e.target.dirx*=-1;
  48.     }
  49.     if((e.target.y+e.target.height/2)>limiteAbajo || (e.target.y-e.target.height/2)<=limiteArriba){
  50.         e.target.diry*=-1;
  51.     }  
  52. }
__________________
Mi sitio: http://www.fluocode.com
  #7 (permalink)  
Antiguo 11/05/2011, 15:36
Avatar de kaze_chan  
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
Respuesta: problemas con direccion de la animacion

ay dios! que grande
tengo 2 carpas epilepticas con doble trastorno de personalidad que nadan de lado y una que nada hacia atras xD

tengo que cambiar el punto de control al centro, pero hasta mañana no podre (maldito CS4 ¬¬)

=^^= =^^= =^^=
  #8 (permalink)  
Antiguo 11/05/2011, 15:53
Avatar de esdebon  
Fecha de Ingreso: agosto-2008
Ubicación: México
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 18
Respuesta: problemas con direccion de la animacion

Cita:
Iniciado por kaze_chan Ver Mensaje
ay dios! que grande
tengo 2 carpas epilepticas con doble trastorno de personalidad que nadan de lado y una que nada hacia atras xD

tengo que cambiar el punto de control al centro, pero hasta mañana no podre (maldito CS4 ¬¬)

=^^= =^^= =^^=
jajajaja, lo de la epilepsia se arregla con lo de poner centradas las carpas, lo de nadar hacia atras, es porque mis carpas improvisadas ven hacia la derecha y supongo que las tuyas no, sólo cambia:


solo cambia los signos de la linea 41 y 43


e.target.x+= e.target.velx * e.target.dirx;
e.target.y+= e.target.vely * e.target.diry;
if(e.target.dirx<0){
e.target.scaleX=-1;
}else{
e.target.scaleX=1;
}

__________________
Mi sitio: http://www.fluocode.com
  #9 (permalink)  
Antiguo 11/05/2011, 16:01
Avatar de kaze_chan  
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
Respuesta: problemas con direccion de la animacion

estoy grabando como nadan, mañana o pasado lo subire a youtube, esto ha sido epico xD

=^^= =^^= =^^=
  #10 (permalink)  
Antiguo 11/05/2011, 17:56
Avatar de esdebon  
Fecha de Ingreso: agosto-2008
Ubicación: México
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 18
Respuesta: problemas con direccion de la animacion

jajajaja, acabo de ver el link que pusiste no lo habia visto

Lo que yo hace eran unas carpas vistas desde un lado de una pecera.

Y lo que quieres son unas carpas vistas desde arriba


Código actionscript:
Ver original
  1. var k_01 = new koi();
  2.     k_01.x = aleatorio(0,181);
  3.     k_01.y = aleatorio(0,181);
  4.     k_01.velx = aleatorio(1,5);
  5.     k_01.vely = aleatorio(1,5);
  6.     k_01.dirx = (1-(Math.floor(Math.random()*2)*2));
  7.     k_01.diry = (1-(Math.floor(Math.random()*2)*2));
  8.     addChild(k_01);
  9. var k_02 = new koi2();
  10.     k_02.x = aleatorio(0,181);
  11.     k_02.y = aleatorio(0,181);
  12.     k_02.velx = aleatorio(1,5);
  13.     k_02.vely = aleatorio(1,5);
  14.     k_02.dirx = (1-(Math.floor(Math.random()*2)*2));
  15.     k_02.diry = (1-(Math.floor(Math.random()*2)*2));
  16.     addChild(k_02);
  17. var k_03 = new koi3();
  18.     k_03.x = aleatorio(0,181);
  19.     k_03.y = aleatorio(0,181);
  20.     k_03.velx = aleatorio(1,5);
  21.     k_03.vely = aleatorio(1,5);
  22.     k_03.dirx = (1-(Math.floor(Math.random()*2)*2));
  23.     k_03.diry = (1-(Math.floor(Math.random()*2)*2));
  24.     addChild(k_03);
  25.    
  26.  
  27. k_01.addEventListener(Event.ENTER_FRAME, mover)
  28. k_02.addEventListener(Event.ENTER_FRAME, mover)
  29. k_03.addEventListener(Event.ENTER_FRAME, mover)
  30.  
  31. var limiteDerecho:Number=stage.stageWidth;
  32. var limiteIzquierdo:Number=0;
  33. var limiteArriba:Number=0;
  34. var limiteAbajo:Number=stage.stageHeight;
  35.  
  36. function  gradosGiro(destinoX:Number, destinoY:Number, origenX:Number, origenY:Number):Number {
  37.     var restoX:Number = destinoX - origenX;
  38.     var restoY:Number = destinoY - origenY;
  39.     return (Math.atan2(restoY,restoX) * 180 / Math.PI);
  40. }
  41. function mover(e:Event):void
  42. {  
  43.     e.target.irX=e.target.velx * e.target.dirx
  44.     e.target.irY=e.target.vely * e.target.diry;
  45.    
  46.     e.target.rotation=gradosGiro(e.target.x+e.target.irX,e.target.y+e.target.irY,e.target.x,e.target.y);
  47.    
  48.     e.target.x+= e.target.irX;
  49.     e.target.y+= e.target.irY;
  50.     ///////////Limites
  51.     if((e.target.x+e.target.width/2)>limiteDerecho || (e.target.x-e.target.width/2)<=limiteIzquierdo){
  52.         e.target.dirx*=-1;
  53.     }
  54.     if((e.target.y+e.target.height/2)>limiteAbajo || (e.target.y-e.target.height/2)<=limiteArriba){
  55.         e.target.diry*=-1;
  56.     }  
  57. }

La función gradosGiro() hace que las carpas vean hacia su destino...
pero para que se vea bien, yo creo que tienes que hacer una funcion con un timer que en un intervalo de tiempo al azar te de una nueva posición destino de las carpas y nuevas velocidades, si no sólo parecerá que rebotan en los bordes.
__________________
Mi sitio: http://www.fluocode.com
  #11 (permalink)  
Antiguo 14/05/2011, 14:03
Avatar de kaze_chan  
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
Respuesta: problemas con direccion de la animacion

te presento a mis [URL="http://youtu.be/S42AWoTj7GI"]carpas[/URL]
asi es como nadaban al principio, ahora ya van hacia adelante y nadan en diagonal, aunque siguen con apilepsia y desdoble de personalidad O.O?

aunque eso es una pequeña parte de toda una pagina web que tengo que hacer, asi que creo que me voy a empezar a centrar en el resto ya que las carpas cumplen su funcion principal y mas adelante ya las mejorare ^^

=^^= =^^= =^^=

Etiquetas: animacion, direccion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:09.