Comunidad de diseño web y desarrollo en internet online

Problemas con el funcion Key.isDown

Citar            
MensajeEscrito el 21 Sep 2008 12:52 am
Buenas Tardes:
Resulta que estoy empezando a crear un juego, ya tengo los movimientos basicos hechos pero resulta que hay unos de los movimientos que quiero que cuando presiono la tecla lo haga solo una vez y que no me lo repita indefinidamente y no se como hacerlo, he probado muchos codigo y nada, y por cierto ya que estan alguien me podria decir como hago para que cuando el personaje salte tambien se mueva hacia la derecha y/o izquierda.
El Codigo del primer frame de mi juego es este:

Código :

onClipEvent (load)
{
    var fight = false;   
}
onClipEvent (enterFrame)
{
   
        if (Key.isDown(39)) // Camina Derecha
        {
         this.mov.gotoAndStop(2);
          this.mov.camina.play(); 
            setProperty("", _x, _x + 5);
            setProperty("", _xscale, 100);
        } // Termina if
      if (Key.isDown(38)) // Salta
        {
       this.mov.gotoAndStop(3);
       this.mov.salto.play();            
        } // Termina if      
      if (Key.isDown(40)) // Agacharse
        {
         this.mov.gotoAndStop(4);
       this.mov.agachado.play();
        } // Termina if
        if (Key.isDown(37)) // Camina Izquierda
        {
            this.mov.gotoAndStop(2);
          this.mov.camina.play(); 
         setProperty("", _x, _x - 5);
            setProperty("", _xscale, -100);
        } // Terina if
          if (fight == false)      
    if (Key.isDown(65)) // Puñetazo Basico
        {
            this.mov.gotoAndStop(5);
          this.mov.puñoB.play();
         fight = true;
        } // Termina if
   if (Key.isDown(83)) // Puñetazo Medio
        {
            this.mov.gotoAndStop(6);
          this.mov.patadaB.play();
          Fight = true;
        } // Termina if
   if (Key.isDown(68)) // Puñetazo Fuerte
        {
            this.mov.gotoAndStop(7);
          this.mov.patadaB.play();
          Fight = true;
        } // Termina if
   if (Key.isDown(90)) // Patada Basica
        {
            this.mov.gotoAndStop(8);
          this.mov.patadaB.play();
         fight = true;
        } // Termina if
   if (Key.isDown(88)) // Patada Media
        {
            this.mov.gotoAndStop(9);
          this.mov.patadaM.play();
          Fight = true;
        } // Termina if
   if (Key.isDown(67)) // Patada Fuerte
        {
            this.mov.gotoAndStop(10);
          this.mov.patadaF.play();
          Fight = true;
        } // Termina if         
      
   if (Key.isDown(65) && Key.isDown(90) ) // Carga 
        {
            this.gotoAndStop(2);
         this.MovA.gotoAndStop(1);
      Fight = true;
        } // Termina if            
      
    else
    {
      fight = false;      
       
    } // Termina else if
}

Muchas gracias de antemano

Por gandalfr2k

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2008 04:34 am
cual movimiento

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 21 Sep 2008 05:20 am
Hola:
Antes de nada gracias por contestarme el movimiento que quiero que lo haga solo cuando apreto lo haga solo una vez es el de carga, ahora lo que esta pasando es que cuando tengo esa combinacion de teclas presionada me lo haces todos el rato y no solo una vez.
Gracias de antemano

Por gandalfr2k

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2008 05:58 am
puedes hacer esto

Código ActionScript :

var keyListener:Object = new Object();
keyListener.onKeyUp = function() {
//de esta forma cualquiera de las dos teclas que apretes la funcion se activa al levantar...y al poder levantar solo una vez se reproduce una vez sola
    if (Key.getCode() == Key.UP,Key.DOWN) {
lo que quieras
   }
};
Key.addListener(keyListener);

es una opcion
avisame si te sirve
salu2
[/code]
como solo se puede levantar una vez por vez la tecla entocnes lo va a hacer una vez sola

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 22 Sep 2008 09:46 am
Utiliza el código de ironeric23 pero arreglando la condición:

Código ActionScript :

var keyListener:Object = new Object();
keyListener.onKeyUp = function():Void{

   if (Key.getCode() == Key.UP || Key.getCode() == Key.DOWN) {
      trace("yes");
   }
   
};
Key.addListener(keyListener);

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 23 Sep 2008 05:39 am
Antes de nada muchas gracias por contestarme, he probado el codigo que me habeis dado y la programacion de mi primer frame a quedado asi:

Código :

onClipEvent (load)
{
    var fight = true;   
}

onClipEvent (enterFrame)
{
 if (Key.isDown(39)) // Camina Derecha
       {
         this.mov.gotoAndStop(2);
          this.mov.camina.play(); 
            setProperty("", _x, _x + 5);
            setProperty("", _xscale, 100);
        } // Termina if
      if (Key.isDown(38)) // Salta
        {
       this.mov.gotoAndStop(3);
       this.mov.salto.play();            
        } // Termina if      
      if (Key.isDown(40)) // Agacharse
        {
         this.mov.gotoAndStop(4);
       this.mov.agachado.play();
        } // Termina if
        if (Key.isDown(37)) // Camina Izquierda
        {
            this.mov.gotoAndStop(2);
          this.mov.camina.play(); 
         setProperty("", _x, _x - 5);
            setProperty("", _xscale, -100);
        } // Terina if
          if (fight == false)      
    if (Key.isDown(65)) // Puñetazo Basico
        {
            this.mov.gotoAndStop(5);
          this.mov.puñoB.play();
         fight = true;
        } // Termina if
   if (Key.isDown(83)) // Puñetazo Medio
        {
            this.mov.gotoAndStop(6);
          this.mov.patadaB.play();
          Fight = true;
        } // Termina if
   if (Key.isDown(68)) // Puñetazo Fuerte
        {
            this.mov.gotoAndStop(7);
          this.mov.patadaB.play();
          Fight = true;
        } // Termina if
   if (Key.isDown(90)) // Patada Basica
        {
            this.mov.gotoAndStop(8);
          this.mov.patadaB.play();
         fight = true;
        } // Termina if
   if (Key.isDown(88)) // Patada Media
        {
            this.mov.gotoAndStop(9);
          this.mov.patadaM.play();
          Fight = true;
        } // Termina if
   if (Key.isDown(67)) // Patada Fuerte
        {
            this.mov.gotoAndStop(10);
          this.mov.patadaF.play();
          Fight = true;
        } // Termina if         
      var keyListener:Object = new Object();  //Carga
      keyListener.onKeyUp = function():Void{
         if (Key.getCode() == Key.UP || Key.getCode(90) == Key.DOWN) { 
            trace("yes");
            this.gotoAndStop(2);
             this.MovA.gotoAndStop(1);
         }
      };
      Key.addListener(keyListener);
         
            
   //if (Key.isDown(65) || Key.isDown(90) ) // Carga 
        {         
         //this.gotoAndStop(2);
         //this.MovA.gotoAndStop(1);
          //Fight = true;   
      } }// Termina if            
      
    
    // Termina else if

El problema esque ahora no me hace la animacion carga ni siquiera una vez, no se si soy yo que entendi mal por eso os lo mando de nuevo, desde ya muchas gracias.
PD: No habria la posibilidad de mandar a alguno de vosotros el FLA para que entendierais un poco mejor lo que estoy tratando de hacer?

Por gandalfr2k

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 23 Sep 2008 02:55 pm
no creo que sea por eso ...pero por las dudas....pusiste gotoAndStop......asi lo querias?la animacion es en la linea del tiempo?

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

chrome
Citar            
MensajeEscrito el 23 Sep 2008 09:07 pm
Mira el código que te dio @ironeric23 no es para introducirlo dentro de un onEnterFrame y menos dentro de uno creado con onClipEvent, es para poner directamente en un frame, el solo. Además la línea siguiente no lleva el número 90:

Código ActionScript :

if (Key.getCode() == Key.UP || Key.getCode(90) == Key.DOWN) { 


Consejo, crea un documento nuevo, pega el código en el primer frame de la película y mira lo que hace.

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.