Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Buffered input? en XNA

Iniciado por Rentero, 07 de Octubre de 2007, 10:34:38 PM

« anterior - próximo »

Rentero

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 ;)

Rentero

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 ;)

pacomix

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...
=El verdadero guerrero de la luz se levanta cuando todos los demás han caído=-






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.