XRInputSourceEvent

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

WebXR 设备 APIXRInputSourceEvent接口描述了一个在 WebXR 用户输入设备(例如手柄控制器、注视跟踪系统或运动跟踪系统)上发生的事件。更具体地说,它们表示XRInputSource状态的改变。

要了解有关在 WebXR 项目中处理输入的更多信息,请参阅文章输入和输入源

Event XRInputSourceEvent

构造函数

XRInputSourceEvent()

创建并返回一个新的XRInputSourceEvent对象,其属性与提供的eventInitDict字典中提供的属性匹配。

实例属性

frame 只读

一个XRFrame对象,提供有关事件发生期间事件帧所需的信息。此帧可能已在过去渲染,而不是当前帧。因为这是一个事件帧,而不是动画帧,所以您不能在上面调用XRFrame方法getViewerPose();而是使用getPose()

inputSource 只读

一个XRInputSource对象,指示哪个输入源生成了输入事件。

实例方法

XRInputSourceEvent接口没有定义任何方法;但是,从父接口Event继承了一些方法。

事件类型

select

发送到XRSession,当发送的输入源已完全完成主要操作时。

selectend

发送到XRSession,当正在进行的主要操作结束时,或者当具有正在进行的主要操作的输入源与系统断开连接时。

selectstart

发送到XRSession,当输入源开始其主要操作时,表示用户已开始类似命令的输入,例如按下触发器或按钮、发出语音命令、轻触触控板等。

squeeze

发送到XRSession,当发送的输入源已完全完成主要挤压操作时。

squeezeend

发送到XRSession,当正在进行的主要挤压操作结束时,或者当具有正在进行的主要挤压操作的输入源与系统断开连接时。

squeezestart

发送到XRSession,当输入源开始其主要挤压操作时,表示用户已开始抓取、挤压或握住控制器。

示例

下面的代码设置了主要操作事件的处理程序,以便确定用户何时在场景中单击(射击/戳/无论什么)对象。

js
xrSession.addEventListener("select", (event) => {
  let targetRayPose = event.frame.getPose(
    event.inputSource.targetRaySpace,
    myRefSpace,
  );

  if (targetRayPose) {
    let hit = myHitTest(targetRayPose.transform);
    if (hit) {
      /* handle the hit */
    }
  }
});

规范

规范
WebXR 设备 API
# xrinputsourceevent-interface

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。