Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/07/2012, 05:20
Avatar de sephirot47
sephirot47
 
Fecha de Ingreso: marzo-2011
Ubicación: BCN
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con movimiento de teclado en AS3

Vale a ver si me explico bien. Yo hago videojuegos en AS3, aunque soy un poco novato, y lo que siempre uso es un Timer que compruebe cuando las teclas están pulsadas. Respecto a lo de que el movimiento sea muy brusco es porque deberías usar aceleración. Mira:

Código Javascript:
Ver original
  1. var pup:Boolean, pdown:Boolean, pright:Boolean, pleft:Boolean; //corresponden al estado de cada tecla, si están pulsadas true, si no false
  2.  
  3. pup = pdown = pright = pleft = false;
  4.  
  5. var acc:Number = 0.5; //La aceleración, 0.5, por ejemplo
  6. var vx:Number = 0, vy:Number;
  7.  
  8. var timer:Timer = new Timer(25, 0); //Cada 25 ms se ejecutará la función moving
  9. timer.start();
  10. timer.addEventListener(TimerEvent.TIMER, moving);
  11.  
  12.  
  13. stage.addEventListener(KeyboardEvent.KEY_DOWN, teclaPulsada);
  14. stage.addEventListener(KeyboardEvent.KEY_UP, teclaSoltada);
  15.  
  16. function moving(e:TimerEvent):void
  17. {
  18.    if(pup)
  19.   {
  20.      vy -= acc;
  21.   }  
  22.   else if(pdown)
  23.   {
  24.      vy += acc;
  25.   }
  26.  
  27.   if(pright)
  28.   {
  29.      vx += acc;
  30.   }
  31.   else if(pleft)
  32.  {
  33.     vx -= acc;
  34.   }
  35.  
  36.   nave.x += vx;
  37.   nave.y += vy;
  38.  
  39. }
  40.  
  41. function teclaPulsada(event:KeyboardEvent):void
  42. {
  43.     switch(event.keyCode)
  44.    {
  45.          case Keyboard.UP:
  46.                  pup = true;
  47.                  break;
  48.          case Keyboard.DOWN:
  49.                  pdown = true;
  50.                  break;
  51.          case Keyboard.RIGHT:
  52.                  pright = true;
  53.                  break;
  54.          case Keyboard.LEFT:
  55.                  peft = true;
  56.                  break;
  57.    }
  58. }
  59.  
  60.  
  61. function teclasSoltada(event:KeyboardEvent):void
  62. {
  63.     switch(event.keyCode)
  64.    {
  65.          case Keyboard.UP:
  66.                  pup = false;
  67.                  break;
  68.          case Keyboard.DOWN:
  69.                  pdown = false;
  70.                  break;
  71.          case Keyboard.RIGHT:
  72.                  pright = false;
  73.                  break;
  74.          case Keyboard.LEFT:
  75.                  peft = false;
  76.                  break;
  77.    }
  78. }

Ese codigo debería funcionar, si te da algún error dímelo. Eso sí, creo que deberías aprender más programación, porque solo ese trozo de código me dice que no llevas mucho programando. Lo más apropiado en la función es usar un switch. No quieras aprender demasiado rápido ;) Espero que funcione.
__________________
Todo lo que tiene un inicio tiene un final inevitable...

¡ No olvides darme karma si te fui útil ^^ !

Última edición por sephirot47; 19/07/2012 a las 05:26