XRInputSourceEvent
WebXR Device API 的 XRInputSourceEvent 接口描述了在 WebXR 用户输入设备(例如手柄、注视跟踪系统或运动跟踪系统)上发生的事件。更具体地说,它们代表了 XRInputSource 状态的变化。
要了解更多关于在 WebXR 项目中处理输入的信息,请参阅文章 输入和输入源。
构造函数
- XRInputSourceEvent()
- 
创建并返回一个新的 XRInputSourceEvent对象,其属性与提供的eventInitDict字典中的属性匹配。
实例属性
- frame只读
- 
一个 XRFrame对象,提供有关事件发生帧的必要信息。此帧可能是在过去渲染的,而不是当前帧。因为这是一个事件帧,而不是动画帧,所以您不能在其上调用XRFrame方法getViewerPose();而是使用getPose()。
- inputSource只读
- 
一个 XRInputSource对象,指示是哪个输入源生成了此输入事件。
实例方法
XRInputSourceEvent 接口不定义任何方法;但是,有几个方法是从父接口 Event 继承而来的。
事件类型
- select
- 
当发送输入源完全完成一项 主要操作时,发送到 XRSession。
- selectend
- 
当正在进行的主要操作结束,或者当具有正在进行的主要操作的输入源与系统断开连接时,发送到 XRSession。
- selectstart
- 
当输入源开始其 主要操作时,发送到 XRSession,表示用户已开始一项命令式输入,例如按下扳机或按钮、发出语音命令、轻触触摸板等。
- squeeze
- 
当发送输入源完全完成一项 主要挤压操作时,发送到 XRSession。
- squeezeend
- 
当正在进行的 主要挤压操作结束,或者当具有正在进行的挤压操作的输入源断开连接时,发送到 XRSession。
- squeezestart
- 
当输入源开始其 主要挤压操作时,发送到 XRSession,表示用户已开始抓取、挤压或握住控制器。
示例
以下代码设置了主要操作事件的事件处理器,以便在用户单击(射击/点击/等)场景中的对象时确定。
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 Device API # xrinputsourceevent-interface | 
浏览器兼容性
加载中…