美文网首页
Gamepad API介绍和用法

Gamepad API介绍和用法

作者: 招风小妖怪 | 来源:发表于2019-03-31 18:11 被阅读0次

    官方测试页面https://html5gamepad.com/

    淘宝乱买的


    IMG_20190331_165009.jpg IMG_20190331_165018.jpg

    连接手柄检测,

    连接电脑后必须任意按下手柄按键才能触发

    window.addEventListener("gamepadconnected", function(e) {
        console.log("控制器已连接于 %d 位: %s. %d 个按钮, %d 个坐标方向。",
        e.gamepad.index, //连接与api的第几位
        e.gamepad.id,//手柄的id
        e.gamepad.buttons.length,//按钮数量
        e.gamepad.axes.length);//摇杆有几个
    });
    
    

    输出结果视插入的手柄而定,记得要按下手柄才会输出
    控制器已连接于 1 位: Xbox 360 Controller (XInput STANDARD GAMEPAD). 17 个按钮, 4 个坐标方向。

    断开连接检测

    window.addEventListener("gamepadconnected", function(e) {
        var gp = navigator.getGamepads()[e.gamepad.index];
        console.log("Gamepad connected at index %d: %s. %d buttons, %d axes.",
        gp.index, gp.id,
        gp.buttons.length, gp.axes.length);
    });
    

    Gamepad disconnected from index 0: Xbox 360 Controller (XInput STANDARD GAMEPAD)

    获取手柄实例

    window.addEventListener("gamepadconnected", function(e) {
        var gp = navigator.getGamepads()[e.gamepad.index];
        console.log("Gamepad connected at index %d: %s. %d buttons, %d axes.",
        gp.index, gp.id,
        gp.buttons.length, gp.axes.length);
    });
    
    属性 说明 返回值 功能
    id 由生产厂家定义
    index 整数,手柄位。请注意,断开一个设备然后连接一个新设备可能会重用以前的索引。
    mapping 唯一:standard
    connected 是否连接,bool值
    buttons 数组,所有按钮组成
    pressed bool值,按钮是否按下
    value 0~1表示按钮按压的深度
    axes 每个摇杆的值组成的数组,每个-1~1之间
    timestamp 有的设备支持,表示手柄运行时间

    如何使用按钮信息——使用定时器轮询

    window.addEventListener("gamepadconnected", function(e) {
        var scanPadTime = setInterval(function(){
          scanPadFun();
        },100);
    });
    
    
    function scanPadFun(){
        var mgp = navigator.getGamepads()[0];
        console.log(mgp.axes)//只获取了摇杆的值,你也可以获取其他的。
    }
    //window.clearInterval(scanPadTime)//清除定时器
    

    以上就是全部用法,但是获取之前应该判断浏览器是否支持,和不同浏览器的调用方法

    //这个获取的是手柄的数组,也就是index,你应该使用gp[index]获得手柄实例
    var gp = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads : []);
      
    

    相关文章

      网友评论

          本文标题:Gamepad API介绍和用法

          本文链接:https://www.haomeiwen.com/subject/uurubqtx.html