Merge pull request #3454 from mzsm/fix-gamepad

Fix gamepad API
This commit is contained in:
Masahiro Wakame committed 2015-01-14 08:55:12 +09:00
commit 26df7a5696
2 files changed
+29 -19

No files matched your search

+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;
}
/**