Spec-Zone.ru › Web APIs

VRDisplay: метод cancelAnimationFrame()

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

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

Метод cancelAnimationFrame() интерфейса VRDisplay — это специальная реализация Window.cancelAnimationFrame, которая аннулирует обработчики, зарегистрированные с помощью VRDisplay.requestAnimationFrame().

Примечание: Этот метод был частью старого API WebVR. Он был заменён API WebXR Device.

Синтаксис

cancelAnimationFrame(handle)

Параметры

handle

Идентификатор, возвращённый вызовом VRDisplay.requestAnimationFrame(), который вы хотите отменить.

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

None (undefined).

Примеры

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
drawScene();

// WebVR: Check to see if WebVR is supported
if (navigator.getVRDisplays) {
  console.log("WebVR 1.1 supported");
  // Then get the displays attached to the computer
  navigator.getVRDisplays().then((displays) => {
    // If a display is available, use it to present the scene
    if (displays.length > 0) {
      vrDisplay = displays[0];
      console.log("Display found");
      // Starting the presentation when the button is clicked: It can only be called in response to a user gesture
      btn.addEventListener("click", () => {
        if (btn.textContent === "Start VR display") {
          vrDisplay.requestPresent([{ source: canvas }]).then(() => {
            console.log("Presenting to WebVR display");

            // Set the canvas size to the size of the vrDisplay viewport

            const leftEye = vrDisplay.getEyeParameters("left");
            const rightEye = vrDisplay.getEyeParameters("right");

            canvas.width =
              Math.max(leftEye.renderWidth, rightEye.renderWidth) * 2;
            canvas.height = Math.max(
              leftEye.renderHeight,
              rightEye.renderHeight,
            );

            // stop the normal presentation, and start the vr presentation
            window.cancelAnimationFrame(normalSceneFrame);
            drawVRScene();

            btn.textContent = "Exit VR display";
          });
        } else {
          vrDisplay.exitPresent();
          console.log("Stopped presenting to WebVR display");

          btn.textContent = "Start VR display";

          // Stop the VR presentation, and start the normal presentation
          vrDisplay.cancelAnimationFrame(vrSceneFrame);
          drawScene();
        }
      });
    }
  });
} else {
  info.textContent = "WebVR API not supported by this browser.";
}

function drawVRScene() {
  // WebVR: Request the next frame of the animation
  vrSceneFrame = vrDisplay.requestAnimationFrame(drawVRScene);

  // …
}

Примечание: Полный код можно посмотреть на raw-webgl-example.

Спецификации

Этот метод был частью старого API WebVR, который был заменён API WebXR Device. Он больше не планируется для стандартизации.

Пока все браузеры не реализуют новые API WebXR, рекомендуется использовать фреймворки, такие как A-Frame, Babylon.js или Three.js, или полифил, для разработки приложений WebXR, которые будут работать во всех браузерах. Подробнее см. руководство Meta's Porting from WebVR to WebXR.

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet Android WebView
cancelAnimationFrame Нет 15–79 98
64–98Поддержка macOS была включена в Firefox 64.
55–98Поддержка Windows была включена в Firefox 55.
Нет Нет Нет 55–98 Нет Нет
6.0Google Cardboard поддерживается в Samsung Internet 7.0.
Нет

См. также

  • 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/VRDisplay/cancelAnimationFrame

Spec-Zone.ru

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