当前位置:首页 > JavaScript

js实现手柄

2026-04-06 07:34:44JavaScript

使用 Gamepad API 检测手柄输入

现代浏览器支持 Gamepad API,可以直接监听手柄的按键和摇杆输入。通过 navigator.getGamepads() 获取连接的手柄列表,监听 gamepadconnectedgamepaddisconnected 事件。

js实现手柄

window.addEventListener("gamepadconnected", (e) => {
  console.log("手柄已连接:", e.gamepad);
});

window.addEventListener("gamepaddisconnected", (e) => {
  console.log("手柄已断开:", e.gamepad);
});

function updateGamepad() {
  const gamepads = navigator.getGamepads();
  for (const gamepad of gamepads) {
    if (gamepad) {
      // 处理按键和摇杆输入
      console.log(gamepad.buttons, gamepad.axes);
    }
  }
  requestAnimationFrame(updateGamepad);
}
updateGamepad();

手柄按键和摇杆映射

手柄的按键和摇杆信息存储在 buttonsaxes 数组中。buttons 数组包含按键状态(pressedvalue),axes 数组包含摇杆的数值(-1 到 1)。

js实现手柄

const gamepad = navigator.getGamepads()[0];
if (gamepad) {
  // 检测 A 键(通常为 buttons[0])
  if (gamepad.buttons[0].pressed) {
    console.log("A 键按下");
  }

  // 检测左摇杆水平轴(通常为 axes[0])
  const leftStickX = gamepad.axes[0];
  if (leftStickX > 0.5) {
    console.log("左摇杆向右");
  }
}

兼容性和备选方案

如果 Gamepad API 不可用,可以考虑使用第三方库如 Joystick.jsGamepad.js。这些库提供了更简单的接口和跨浏览器支持。

// 使用 Joystick.js 示例
const joystick = new Joystick({
  zone: document.getElementById('joystick'),
  mode: 'static',
  size: 100,
  color: '#000000',
});

joystick.on('move', (e) => {
  console.log(e.angle.degree, e.distance);
});

手柄振动功能

部分手柄支持振动功能,可以通过 GamepadHapticActuator 触发。

const gamepad = navigator.getGamepads()[0];
if (gamepad && gamepad.vibrationActuator) {
  gamepad.vibrationActuator.playEffect("dual-rumble", {
    startDelay: 0,
    duration: 1000,
    weakMagnitude: 1.0,
    strongMagnitude: 1.0,
  });
}

标签: 手柄js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…