Comunidad de diseño web y desarrollo en internet online

ayuda mover mc con teclado

Citar            
MensajeEscrito el 15 Ene 2011 04:39 pm
Hola a todos.

Tengo un código que encontré en los fragmentos de códigos de flash cs5 que sirve para mover un mc con el teclado.

Código ActionScript :

stage.addEventListener(KeyboardEvent.KEY_DOWN, MoverElPibe);

function MoverElPibe(event:KeyboardEvent):void
{
   switch (event.keyCode)
   {
      case Keyboard.UP:
      {
         personaje.y -= 5;
         break;
      }
      case Keyboard.DOWN:
      {
         personaje.y += 5;
         break;
      }
      case Keyboard.LEFT:
      {
         personaje.x -= 5;
         break;
      }
      case Keyboard.RIGHT:
      {
         personaje.x += 5;
         break;
      }
   }
}


El caso es que quiero que el mc se mueva cuando tengo la tecla pulsada pero el codigo hace que el mc se mueva un poco para un lado (manteniendo la tecla) se quede parado durante un segundo y luego avanza sin parar (hasta soltar la tecla).

Lo que quiero es un codigo que haga la misma función que en as2 cómo:

Código ActionScript :

onClipEvent (enterFrame) {
if(Key.isDown(Key.LEFT)){
_x=_x - 4;
gotoAndStop(2);
}

if(Key.isDown(Key.RIGHT)){
_x=_x + 4;
gotoAndStop(3);
} 

if(Key.isDown(Key.UP)){
_y=_y - 4;
gotoAndStop(4);
} 

if(Key.isDown(Key.DOWN)){
_y=_y + 4;
gotoAndStop(5);
}
}


No os pido que me migréis el codigo a as3 pero si alguna manera de hacer que no se bloquee

Alguien me puede ayudar?

Por Carlow18

25 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2011 06:47 pm
acabo de actualizar el post del juego de coches ;) puedes verlo en Mejorando el juego de coches de carreras

yo utilizo para AS3:

Código ActionScript :

private var upPressed:Boolean;
private var downPressed:Boolean; 
private var rightPressed:Boolean;  
private var leftPressed:Boolean; 

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);//iniciamos los eventos del teclado 
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);

 private function keyUpListener(e:KeyboardEvent):void {             
         if (e.keyCode == Keyboard.RIGHT){ 
            rightPressed = false; 
         }else if(e.keyCode == Keyboard.LEFT){ 
            leftPressed = false; 
         }else if(e.keyCode == Keyboard.DOWN){ 
            downPressed = false; 
         }else if(e.keyCode == Keyboard.UP){ 
            upPressed = false; 
         } 
      } 
       
      private function keyDownListener(e:KeyboardEvent):void {             
         if (e.keyCode == Keyboard.RIGHT){             
            rightPressed = true; 
         }else if(e.keyCode == Keyboard.LEFT){ 
            leftPressed = true; 
         }else if(e.keyCode == Keyboard.DOWN){ 
            downPressed = true; 
         }else if(e.keyCode == Keyboard.UP){ 
            upPressed = true; 
         }       
      } 

Por theblabla

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2011 07:43 pm
me sigue funcionando igual.

A ver, yo lo que quiero es que al presionar la tecla el mc se desplace hacia tal lado. Pero no se que cosa tan rara tiene as3 que al presionar la tecla avanza el numero que pusiste una vez y se queda quieto aunque mantengas la tecla durante un segundo (como si se bloqueara) y luego SI, avanza, pero no es lo que quiero

Por Carlow18

25 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Ene 2011 08:54 pm
Hola, deberias mostrarnos tu codigo, asi vamos mas rapido y sin dar palos de ciego.

Por si sirve de algo... en mi ejemplo utilizo "timer" para mover el clip

Saludos

Por theblabla

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2011 09:14 pm
Ya lo mostré, es este:

Código ActionScript :


stage.addEventListener(KeyboardEvent.KEY_DOWN, MoverElPibe); 
 
function MoverElPibe(event:KeyboardEvent):void 
{ 
   switch (event.keyCode) 
   { 
      case Keyboard.UP: 
      { 
         personaje.y -= 5; 
         break; 
      } 
      case Keyboard.DOWN: 
      { 
         personaje.y += 5; 
         break; 
      } 
      case Keyboard.LEFT: 
      { 
         personaje.x -= 5; 
         break; 
      } 
      case Keyboard.RIGHT: 
      { 
         personaje.x += 5; 
         break; 
      } 
   } 
}

Por Carlow18

25 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ene 2011 03:04 pm
podrias usar un EnterFrame

Por avatarbobo

28 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ene 2011 04:38 pm
Esa es la cuestion, por un lado los listeners del teclado y por otro el de animacion, de tal manera que a cada llamada compruebe si la tecla en cuestion esta en true (presionada).

El ejemplo que te puse del coche de carreras lo puedes adaptar a tus necesidades :)

Saludos

Por theblabla

10 de clabLevel



 

firefox

 

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