GamepadButton

La interfaz GamepadButton define un bot√≥n individual de un gamepad u otro control, dando acceso al estado actual de diferentes tipos de botones disponibles en el dispositivo de control.

Un objeto GamepadButton se devuelve al solicitar cualquier valor del array devuelto por la propiedad buttons de la interfaz Gamepad.

Nota: Este es el caso en Firefox Gecko 28 en adelante; Chrome y versiones anteriores de Firefox contin√ļan devolviendo un array de valores dobles cuando se accede a esta propiedad.

Propiedades

GamepadButton.value Read only
Un valor doble usado para representar el estado actual de botones an√°logos, as√≠ como los gatillos de muchos gamepads modernos. Los valores se normalizan al rango 0.0 ‚ÄĒ1.0, donde 0.0 representa un bot√≥n que no est√° presionado, y 1.0 representa un bot√≥n que est√° completamente presionado.
GamepadButton.pressed Read only
Un valor Boolean que indica el estado el bot√≥n, ya sea que actualmente se encuentre presionado (true) o sin presionar (false).

Ejemplo

El siguiente c√≥digo se toma de mi demostraci√≥n del bot√≥n del API de Gamepad (puedes ver el demo en vivo, y encontrar el c√≥digo fuente en Github.) Nota que el c√≥digo ‚ÄĒ en Chrome Navigator.getGamepads necesita un prefijo webkit y los valores del bot√≥n ser√°n guardados como un array de valores dobles, mientras qe en Firefox Navigator.getGamepads no se necesita un prefijo, y los valores de los botones se guardan como un array de objetos GamepadButton; estas son las propiedades GamepadButton.valueGamepadButton.pressed a las que necesitamos acceder, dependiendo de qu√© tipo de botones haya. En este simple ejemplo yo solo he permitido estos.

function gameLoop() {
  if(navigator.webkitGetGamepads) {
    var gp = navigator.webkitGetGamepads()[0];

    if(gp.buttons[0] == 1) {
      b--;
    } else if(gp.buttons[1] == 1) {
      a++;
    } else if(gp.buttons[2] == 1) {
      b++;
    } else if(gp.buttons[3] == 1) {
      a--;
    }
  } else {
    var gp = navigator.getGamepads()[0];

    if(gp.buttons[0].value > 0 || gp.buttons[0].pressed == true) {
      b--;
    } else if(gp.buttons[1].value > 0 || gp.buttons[1].pressed == true) {
      a++;
    } else if(gp.buttons[2].value > 0 || gp.buttons[2].pressed == true) {
      b++;
    } else if(gp.buttons[3].value > 0 || gp.buttons[3].pressed == true) {
      a--;
    }
  }

  ball.style.left = a*2 + "px";
  ball.style.top = b*2 + "px";

  var start = rAF(gameLoop);
};

Especificaciones

Specification Status Comment
Gamepad
La definición de 'GamepadButton' en esta especificación.
Working Draft Definición inicial

Compatibilidad de Navegadores

BCD tables only load in the browser

Recomendado