Polling - jackgris/wikiLibGDX_es GitHub Wiki

9.2.1 Polling

Polling se refiere a la comprobación del estado actual de un dispositivo de entrada, por ejemplo, si una tecla específica es presionada, donde esta el primer dedo en la pantalla y así sucesivamente. Es una manera rápida y fácil de procesar la entrada del usuario y será suficiente para la mayoría de los juegos de tipo arcade.

Precaución: Si usted confía en el polling, puede ser que te pierdas los eventos, por ejemplo, una tecla hacia arriba/abajo en un ritmo rápido. Si usted necesita asegurarse de que se completó una secuencia de acción específica de entrada, en su lugar utilice el control de eventos.

Polling del teclado

El polling para la entrada de un teclado se hace con sólo una simple línea de código, como la de a continuación.

boolean isAPressed = Gdx.input.isKeyPressed(Keys.A);

El parámetro pasado a este método es un Código Key. En lugar de tener que memorizar estos códigos hay una clase estática dentro de la interfaz Input que contiene los códigos que se pueden utilizar. Se los puede ver aquí.

Polling del Touch Screen / Mouse

Hay un número de métodos en relación con el polling de la pantalla táctil / ratón. Para comprobar si uno o más dedos están actualmente en la pantalla (lo que equivale a que un botón del ratón este presionado) usted puede hacer lo siguiente:

boolean isTouched = Gdx.input.isTouched();

Si para la entrada multi-touch le interesa saber si un dedo específico (puntero) se encuentra actualmente en la pantalla:

// Will Return whether the screen is currently touched
boolean firstFingerTouching = Gdx.input.isTouched(0);
boolean secondFingerTouching = Gdx.input.isTouched(1);
boolean thirdFingerTouching = Gdx.input.isTouched(2);

Cada dedo que es presionado en la pantalla gana el llamado al índice de puntero. El primer dedo a presionar obtiene el índice 0, el siguiente obtiene el índice 1 y así sucesivamente. Si un dedo se levanta de la pantalla y la toca de nuevo, mientras que los otros dedos están todavía en la pantalla, el dedo obtendrá el primer índice libre. Un ejemplo:

1 cae el primer dedo -> 0 2 el segundo dedo se pone en -> 1 3 el tercer dedo se pone en -> 2 4 el segundo dedo sube, se libera el -> 1 5 el primer dedo sube, el -> 0 se convierte en libre, en este momento sólo se utiliza el 2 6 otro dedo se pone en -> 0, ya que es el primer índice esta libre

En el escritorio o en el navegador usted sólo va a tener un único "dedo" por así decirlo.

Si desea comprobar si el usuario toco y solto cualquier dedo de nuevo se puede utilizar el siguiente método:

// Will return whether the screen has just been touched
boolean justTouched = Gdx.input.justTouched();

Esto se puede utilizar en situaciones en las que desea comprobar un toque soltar/tocar en una secuencia muy rápidamente, por ejemplo, en una pantalla que dice "toque la pantalla para continuar". Tenga en cuenta que no es un método fiable, ya que se basa en el polling.

Para obtener las coordenadas de un dedo específico que pueden utilizar los siguientes métodos:

int firstX = Gdx.input.getX();
int firstY = Gdx.input.getY();
int secondX = Gdx.input.getX(1);
int secondY = Gdx.input.getY(1);

Aquí vamos a tener las coordinas en el índice 0 del puntero (0 es por defecto) y el índice de puntero 1. Las coordenadas se reportan en un sistema de coordenadas con respecto a la pantalla. El origen (0, 0) está en la esquina superior izquierda de la pantalla, los puntos del eje x van hacia la derecha, y los puntos del eje y van hacia abajo.

Botones del Mouse

En el escritorio también se puede comprobar que en el ratón se estan pulsando los botones en la actualidad:

boolean leftPressed = Gdx.input.isButtonPressed(Input.Buttons.LEFT);
boolean rightPressed = Gdx.input.isButtonPressed(Input.Buttons.RIGHT);

Vea la clase Buttons para ver más constantes.

Tenga en cuenta que en Android sólo se va a emular el botón izquierdo del ratón. Cualquier evento táctil se interpretará como si se emitió con el botón izquierdo del ratón. Las pantallas táctiles, obviamente, no tienen una noción de izquierda, derecha y el botón central.

Enlaces