XRInputSourceArray:entries() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

XRInputSourceArray 接口的 entries() 方法会返回一个 JavaScript iterator,你可以使用这个迭代器遍历输入源数组中的键值对。数组中的每一项都是一个 XRInputSource 对象。

最常见的情况是,你会将它与诸如 for...of 这样的语句结合使用。

语法

js
entries()

参数

无。

返回值

一个 iterator,可以用来遍历输入源数组中包含的 XRInputSource 对象列表。

示例

此示例代码段获取会话的输入列表,并尝试使用它来处理它支持的每种类型的输入设备。

js
let sources = xrSession.inputSources;

for (const input of sources.entries()) {
  if (input.gamepad) {
    checkGamepad(input.gamepad);
  } else if (
    input.targetRayMode === "tracked-pointer" &&
    input.handedness === player.handedness
  ) {
    /* Handle main hand controller */
    handleMainHandInput(input);
  } else {
    /* Handle other inputs */
  }
}

对于列表中的每个输入,游戏手柄的输入会使用该输入的 Gamepad 对象,该对象可以从其 gamepad 属性获取,然后传递给 checkGamepad() 方法进行处理。

对于其他设备,我们会查找玩家主手上的 tracked-pointer 设备,并将它们分派给 handleMainHandInput() 方法。

规范

此特性似乎未在任何规范中定义。

浏览器兼容性