Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Rentero en 07 de Octubre de 2007, 10:34:38 PM

Título: ¿Buffered input? en XNA
Publicado por: Rentero en 07 de Octubre de 2007, 10:34:38 PM
Hola.

Intentaré ser claro :)
Esta es parte mi clase Game.
protected override void Update(GameTime gameTime)
{
    if (Keyboard.GetState().IsKeyDown(Keys.Space))
         cuadro.Drawable = !cuadro.Drawable;

     base.Update(gameTime);
}


El problema es que el "cuadro" no aparece y desaparece cada vez que pulso espacio, sino que parpadea(porque mientras lo pulso se ejecuta Update() varias veces) y es imposible controlarlo.

Lo que quiero hacer es que aparezca y desaparezca cada vez que pulse espacio...
¿Eso es buffered input? ¿O todo lo contrario?

¿Puedo hacer esto con XNA?

Gracias por leerme ;)
Título: ¿Buffered input? en XNA
Publicado por: Rentero en 08 de Octubre de 2007, 02:42:08 AM
Hola de nuevo.

Por ahora lo e solucionado de esta forma:
bool presionado = false;
protected override void Update(GameTime gameTime)
{
   if (presionado && Keyboard.GetState().IsKeyUp(Keys.Space))
       cuadro.Drawable = !cuadro.Drawable;

   presionado = Keyboard.GetState().IsKeyDown(Keys.Space);

   base.Update(gameTime);
}


¿Habría alguna manera de hacerlo mejor?

Saludos ;)
Título: ¿Buffered input? en XNA
Publicado por: pacomix en 08 de Octubre de 2007, 08:30:33 PM
Yo por mi parte, y es de la forma en la que siempre lo hago, es tener una clase que maneje las pulsaciones de teclado y que según el estado de la misma, llame a un método de keyPressed, keyRepeated y keyReleased en el loop del motor. Para mí es más comodo así, aunque supongo que habrá más alternativas...