XRInputSourceEvent: frame 属性

可用性有限

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

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

只读的 XRInputSourceEvent 属性 frame 指定了一个 XRFrame 对象,该对象代表了发生 WebXR 用户输入事件的帧。因此,这可能是一个发生在过去而不是当前或即将发生的事件。

一个 XRFrame,指示了对象所描述的用户输入事件发生的帧。

用法说明

事件帧不对应于传递给帧渲染回调函数的视觉帧(有关回调的详细信息,请参阅 渲染和 WebXR 帧渲染回调)。相反,frame 属性指定的 XRFrame 是提供对 getPose() 方法的访问的一种方法,您可以使用它来获取事件发生时场景中对象的相对位置。

然而,由于事件帧不是动画帧,因此没有可用的视口姿势来表示视口的当前视角;调用 getViewerPose() 的结果将是一个具有空 views 列表的 XRViewerPose

示例

此代码显示了一个 selectstart 事件的处理程序,它从帧中获取目标射线的姿势,将表示射线的姿势(event.inputSource.targetRaySpace)映射到整体参考空间 myRefSpace

然后,如果结果不是 null,则将目标射线姿势的变换传递给一个名为 myCheckAndHandleHit() 的函数,以查看在触发选择时射线是否指向任何东西。

js
xrSession.onselectstart = (event) => {
  let targetRayPose = event.frame.getPose(
    event.inputSource.targetRaySpace,
    myRefSpace,
  );
  if (targetRayPose) {
    checkAndHandleHit(targetRayPose.transform);
  }
};

规范

规范
WebXR Device API
# dom-xrinputsourceevent-frame

浏览器兼容性