XRInputSourceArray: forEach() 方法

可用性有限

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

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

XRInputSourceArray 方法 forEach() 会对数组中的每个输入源执行一次指定的 callback 函数,从索引 0 开始,直到列表末尾。

语法

js
forEach(callback)
forEach(callback, thisArg)

参数

回调

一个函数,将为 xrInputSourceArray 数组中的每个条目执行一次。该 callback 最多接受三个参数:

currentValue

一个 XRInputSource 对象,这是当前正在处理的 xrInputSourceArray 中的项的值。

currentIndex 可选

一个整数值,表示 currentValue 元素在数组中的索引。如果你不需要知道索引号,可以省略此参数。

sourceList 可选

正在处理的 XRInputSourceArray 对象。如果你不需要此信息,可以省略此参数。

thisArg 可选

执行 callback 时要用于 this 的值。请注意,如果你使用 箭头函数表示法=>)来提供 callback,则可以省略 thisArg,因为所有箭头函数都将 this 绑定到词法作用域。

返回值

Undefined。

示例

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

js
let inputSources = xrSession.inputSources;

inputSources.forEach((input) => {
  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 */
  }
});

对于列表中的每个输入,callback 将将手柄输入分派给 checkGamepad(),并将输入的 Gamepad 对象(从其 gamepad 属性获取)作为输入。

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

规范

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

浏览器兼容性

另见