PositionSensorVRDevice: getState() 方法

已弃用:此功能不再推荐。虽然一些浏览器可能仍然支持它,但它可能已经被相关 Web 标准移除,或者正在被移除,或者只保留了兼容性目的。避免使用它,如果可能,更新现有代码;请查看此页面底部的兼容性表格 来指导您的决定。请注意,此功能可能随时停止工作。

非标准:此功能是非标准的,并且不在标准跟踪中。不要在面向 Web 的生产网站上使用它:它不会对所有用户都有效。实现之间也可能存在较大差异,并且行为将来可能会改变。

getState()PositionSensorVRDevice接口的方法,它返回当前帧(例如,在当前window.requestAnimationFrame回调中)或上一帧的传感器状态,并包含在一个VRPose对象中。通常情况下,您应该使用此方法,而不是PositionSensorVRDevice.getImmediateState

语法

js
getState()

参数

无。

返回值

一个VRPose对象。

示例

以下示例使用 WebVR API 在requestAnimationFrame循环的每一帧上更新一个简单CanvasRenderingContext2D场景的视图。

js
function setView() {
  const posState = gPositionSensor.getState();
  if (posState.hasPosition) {
    posPara.textContent = `Position: x${roundToTwo(
      posState.position.x,
    )} y${roundToTwo(posState.position.y)} z${roundToTwo(posState.position.z)}`;
    xPos = -posState.position.x * WIDTH * 2;
    yPos = posState.position.y * HEIGHT * 2;
    zPos = -posState.position.z > 0.01 ? -posState.position.z : 0.01;
  }

  if (posState.hasOrientation) {
    orientPara.textContent = `Orientation: x${roundToTwo(
      posState.orientation.x,
    )} y${roundToTwo(posState.orientation.y)} z${roundToTwo(
      posState.orientation.z,
    )}`;
    xOrient = posState.orientation.x * WIDTH;
    yOrient = -posState.orientation.y * HEIGHT * 2;
    zOrient = posState.orientation.z * 180;
  }
}

在这里,我们使用getState()获取一个VRPose对象,并将其存储在posState中。然后,我们检查当前帧中是否存在位置和方向信息,使用VRPose.positionVRPose.orientation(如果例如头戴式显示器关闭或未指向位置传感器,则会返回null,这会导致错误)。

然后,我们输出 x、y 和 z 位置和方向值以供参考,并使用这些值更新xPosyPoszPosxOrientyOrientzOrient变量,这些变量用于在每一帧上更新场景渲染。

浏览器兼容性

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

另请参阅