Comunidad de diseño web y desarrollo en internet online

Detectar dos teclas pulsadas simultaneamente

Citar            
MensajeEscrito el 21 Ago 2008 01:05 am
Hola, otra vez yo, esta es una pregunta sencilla (creo)
Estoy haciendo un juego y me está funcionando todo bien hasta ahora, cuando presiono las teclas derecha e izquierda, el personaje se mueve correctamente (en realidad es el escenario el que se mueve) pero cuando salto todo se detiene, deja de moverse y tengo que presionar de nuevo para que se mueva otra vez.

Existe alguna manera de lograr que el escenario se mueva mientras se ejecuta la animación del salto?

Es decir,

Qué haga las dos acciones al mismo tiempo? (moverse y saltar).

Muchas gracias de antemano.

Por JohnRestrepo

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Ago 2008 02:45 am
Hola, si no pones el código que estas usando no podremos ver el problema.
Saludos

Por GustavoV

Claber

136 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Ago 2008 05:23 am
Este es el código que estoy usando para mover el personaje que tiene como nombre de instancia "char"

Código :

fra = 1;
char.onEnterFrame = function():Void {
   if (Key.isDown(Key.LEFT)){//Izquierda
      if(escenario._x < 2409.3){
         char.gotoAndPlay("caminarIzq");
         char.mcaminarIzq.gotoAndPlay(fra++);
         escenario._x += 8;
      }
   }else if(Key.isDown(Key.RIGHT)){//Derecha
      if(escenario._x > -513.0){
         char.gotoAndPlay("caminarDer");
         char.mcaminarDer.gotoAndPlay(fra++);
         escenario._x -= 8;         
      }
   }else if(Key.isDown(Key.UP)){//Arriba
         char.gotoAndPlay("saltoDer");
         char.msaltoDer.gotoAndPlay(fra++);
   }
};

saltoDer es el salto hacia la derecha, me faltaría programar el salto hacia la izquierda.

Al final de cada animación tengo lo siguiente:

Código :

this._parent._parent.fra = 1;

Que lo que hace es regresar "fra" a 1.

Y en el código del movieClip:

Código :

onClipEvent(keyUp){
   this.gotoAndStop("normal");
}


"normal" es la posición de espera del personaje.

Espero haber sido claro ^^

Por JohnRestrepo

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Ago 2008 01:38 pm
Tenía una clase creada para lograr esto, pero ahora no la encuentro. Lo que debes hacer es que cuando se presione una tecla se incluya en un arreglo de las teclas que se presionan y cuando se suelte se elimina del arreglo. Entonces cuando quieras saltar, no se chequea si la tecla de saltar está presionada, sino si la tecla de saltar se encuentra en este arreglo, de esta forma te seguirá funcionando el boton de mover el personaje, a la vez del botón de saltar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 21 Ago 2008 09:36 pm
mmmmm, me puedes dar un ejemplito de cómo hacerlo?
Solo la manera de meter las teclas en el array y como capturarlas, es que no lo tengo del todo claro.

Mil gracias

Por JohnRestrepo

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Ago 2008 02:56 am
Si no es muy complicado tu caso y no tienes muchas combinaciones de teclas que presionar, puedes utilizar algo como esto


Código ActionScript :

this.onEnterFrame = function():Void{
   
   if(Key.isDown(Key.RIGHT)){
      
      char.gotoAndPlay("caminarDer");

 
             char.mcaminarDer.gotoAndPlay(fra++);

 
             escenario._x -= 8;
      
   }
   
   if(Key.isDown(Key.SPACE)){
      
      char.gotoAndPlay("saltoDer");

 
             char.msaltoDer.gotoAndPlay(fra++);
      
   }
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 22 Ago 2008 02:56 am
Es para poner en el frame, no encima de ningun clip.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 22 Ago 2008 01:53 pm
Lo siento, pero sigue funcionando igual, ahora salta correctamente, se mueve correctamente y todo bien, pero sigue el problema de no detectar dos teclas, o salta o camina pero no me detecta ambas teclas, lo que pretendo con esto es que me haga un salto diagonal cuando presiono la tecla de salto y la tecla de caminar.
Alguna idea?
Estoy en problemas con esto :)

Por JohnRestrepo

21 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Ago 2008 03:17 pm
Bueno debes tener un problema con los clips dentro de tu personaje de que no coinciden los frames de la animación, el ejemplo que te puse lo hice de esta manera:

Código ActionScript :

this.onEnterFrame = function():Void  {

   if (Key.isDown(Key.RIGHT)) {

      personaje._x += 5;

   }
   if (Key.isDown(Key.SPACE)) {

      personaje._y -= 5;

   }
};


Sitúa un clip con nombre de instancia "personaje" en tu escena para que notes que cuando presiones derecha y espacio a la mima vez el personaje se moverá hacia arriba y hacia adelante en diagonal.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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