Merge pull request #3454 from mzsm/fix-gamepad

Fix gamepad API
This commit is contained in:
Masahiro Wakame
2015-01-14 08:55:12 +09:00
2 changed files with 29 additions and 19 deletions
+17 -19
View File
@@ -19,24 +19,22 @@
};
(()=>{
window.addEventListener('GamepadConnected', (e: Gamepad.GamepadEvent)=>{
var gamepadconnected = (e: Gamepad.GamepadEvent) => {
console.log('Gamepad ' + e.gamepad.index + ' connected!');
}, false);
window.addEventListener('GamepadDisconnected', (e: Gamepad.GamepadEvent)=>{
if(e.gamepad.mapping == 'standard'){
console.log("The Gamepad's controls have been mapped to the Standard Gamepad layout.");
}
};
var gamepaddisconnected = (e: Gamepad.GamepadEvent) => {
console.log('Gamepad ' + e.gamepad.index + ' disconnected!');
}, false);
window.addEventListener('webkitGamepadConnected', (e: Gamepad.GamepadEvent)=>{
console.log('Gamepad ' + e.gamepad.index + ' connected!');
}, false);
window.addEventListener('webkitGamepadDisconnected', (e: Gamepad.GamepadEvent)=>{
console.log('Gamepad ' + e.gamepad.index + ' disconnected!');
}, false);
window.addEventListener('mozGamepadConnected', (e: Gamepad.GamepadEvent)=>{
console.log('Gamepad ' + e.gamepad.index + ' connected!');
}, false);
window.addEventListener('mozGamepadDisconnected', (e: Gamepad.GamepadEvent)=>{
console.log('Gamepad ' + e.gamepad.index + ' disconnected!');
}, false);
};
window.addEventListener('GamepadConnected', gamepadconnected, false);
window.addEventListener('GamepadDisconnected', gamepaddisconnected, false);
window.addEventListener('webkitGamepadConnected', gamepadconnected, false);
window.addEventListener('webkitGamepadDisconnected', gamepaddisconnected, false);
window.addEventListener('mozGamepadConnected', gamepadconnected, false);
window.addEventListener('mozGamepadDisconnected', gamepaddisconnected, false);
var requestAnimationFrame = window.requestAnimationFrame || (<any>window).mozRequestAnimationFrame;
var getGamepads = navigator.getGamepads || navigator.webkitGetGamepads;
@@ -45,13 +43,13 @@
{
requestAnimationFrame.call(window, runAnimation);
var gamepads: Gamepad.GamepadList = getGamepads.call(navigator);
var gamepads: Gamepad.Gamepad[] = getGamepads.call(navigator);
for(var i = 0; i < gamepads.length; i++){
var pad: Gamepad.Gamepad = gamepads[i];
if(pad){
if(pad && pad.connected){
for (var k = 0; k < pad.buttons.length; k++)
{
var button = pad.buttons[k];
var button: Gamepad.GamepadButton = pad.buttons[k];
if(button.pressed){
console.log('pad[' + pad.index + ']: ' + 'time=' + pad.timestamp + ' id="' + pad.id + '" button[' + k + '] = ' + button.value);
}
+12
View File
@@ -37,6 +37,18 @@ declare module Gamepad{
* @readonly
*/
buttons:GamepadButton[];
/**
* Indicates whether the physical device represented by this object is still connected to the system. When a gamepad becomes unavailable, whether by being physically disconnected, powered off or otherwise unusable, the connected attribute must be set to false.
* @readonly
*/
connected:boolean;
/**
* The mapping in use for this device. If the user agent has knowledge of the layout of the device, then it should indicate that a mapping is in use by setting this property to a known mapping name. Currently the only known mapping is "standard", which corresponds to the Standard Gamepad layout. If the user agent does not have knowledge of the device layout and is simply providing the controls as represented by the driver in use, then it must set the mapping property to an empty string.
* @readonly
*/
mapping:string;
}
/**