Spec-Zone.ru › Web APIs

PositionSensorVRDevice: метод getState()

Устаревшее: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, находится в процессе удаления или поддерживается только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; обратитесь к таблице совместимости внизу этой страницы, чтобы принять решение. Помните, что эта функция может перестать работать в любое время.

Нестандартная: Эта функция нестандартна и не поддерживается стандартами. Не используйте её на сайтах, ориентированных на веб, в продакшене: она не будет работать для всех пользователей. Также могут быть значительные различия в реализации и поведении в будущем.

Метод getState() интерфейса PositionSensorVRDevice возвращает текущее состояние датчика положения для текущей кадра (например, в рамках текущего вызова window.requestAnimationFrame) или для предыдущего кадра, содержащегося в объекте VRPose. Это метод, который обычно нужно использовать, а не PositionSensorVRDevice.getImmediateState.

Синтаксис

getState()

Параметры

Нет.

Возвращаемое значение

Объект VRPose.

Примеры

В следующем примере используется API WebVR для обновления отображения простой сцены CanvasRenderingContext2D в каждом кадре цикла requestAnimationFrame.

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;
  }
}

Здесь мы получаем объект VRPose с помощью getState() и сохраняем его в posState. Затем мы проверяем, присутствует ли информация о положении и ориентации в текущем кадре, используя VRPose.position и VRPose.orientation (эти функции возвращают null, если, например, шлем виртуальной реальности выключен или не нацелен на датчик положения, что вызовет ошибку).

Затем мы выводим значения координат x, y и z положения и ориентации для информационных целей и используем эти значения для обновления переменных xPos, yPos, zPos, xOrient, yOrient, и zOrient, которые используются для обновления рендеринга сцены в каждом кадре.

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на iOS Samsung Internet WebView Android
getState Нет Нет 39 Нет Нет Нет Нет Нет Нет Нет Нет

См. также

  • API WebVR

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PositionSensorVRDevice/getState

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API