XRTransientInputHitTestSource

可用性有限

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

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

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

XRTransientInputHitTestSource 接口是 WebXR 设备 API 的一部分,用于处理瞬态输入命中测试订阅。您可以通过调用 XRSession.requestHitTestSourceForTransientInput() 来获取一个 XRTransientInputHitTestSource 对象。

此对象本身不包含瞬态输入命中测试结果,但它用于通过调用 XRFrame.getHitTestResultsForTransientInput() 来为每个 XRFrame 计算命中测试,该方法返回 XRTransientInputHitTestResult 对象。

实例属性

无。

实例方法

XRTransientInputHitTestSource.cancel() 实验性

取消订阅瞬态输入命中测试。

示例

为会话获取 XRTransientInputHitTestSource 对象

使用 XRSession.requestHitTestSourceForTransientInput() 方法来获取瞬态输入命中测试源。

js
const xrSession = navigator.xr.requestSession("immersive-ar", {
  requiredFeatures: ["local", "hit-test"],
});

let transientHitTestSource = null;

xrSession
  .requestHitTestSourceForTransientInput({
    profile: "generic-touchscreen",
    offsetRay: new XRRay(),
  })
  .then((touchScreenHitTestSource) => {
    transientHitTestSource = touchScreenHitTestSource;
  });

// frame loop
function onXRFrame(time, xrFrame) {
  let hitTestResults = xrFrame.getHitTestResultsForTransientInput(
    transientHitTestSource,
  );

  // do things with the transient hit test results
}

取消订阅瞬态输入命中测试

要取消订阅瞬态输入命中测试源,请使用 XRTransientInputHitTestSource.cancel() 方法。由于该对象将不再可用,您可以进行清理并将其设置为 null

js
transientHitTestSource.cancel();
transientHitTestSource = null;

规范

规范
WebXR Hit Test 模块
# transient-input-hit-test-source-interface

浏览器兼容性

另见