XRSession: cancelAnimationFrame() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die cancelAnimationFrame()-Methode des XRSession-Interfaces storniert einen Animationsrahmen, der zuvor durch einen Aufruf von requestAnimationFrame angefordert wurde.

Syntax

js
cancelAnimationFrame(handle)

Parameter

handle

Der eindeutige Wert, der durch den Aufruf von requestAnimationFrame() zurückgegeben wurde, mit dem der Animations-Callback zuvor terminiert wurde.

Rückgabewert

Keiner (undefined).

Nutzungshinweise

Diese Funktion hat keine Wirkung, wenn der angegebene handle nicht gefunden werden kann.

Beispiele

Im folgenden Beispiel sehen wir Code, der eine WebXR-Sitzung startet, wenn immersiver VR-Modus unterstützt wird. Einmal gestartet, plant die Sitzung ihren ersten Rahmen zur Darstellung, indem sie requestAnimationFrame() aufruft.

Die am Ende gezeigte pauseXR()-Funktion kann aufgerufen werden, um die WebVR-Sitzung im Wesentlichen auszusetzen, indem jeder ausstehende Animationsrahmen-Callback storniert wird. Da jeder Rahmen-Callback den nächsten plant, beendet das Entfernen des Callbacks das Aktualisieren der WebXR-Szene.

js
const XR = navigator.xr;

let requestHandle = null;
let xrSession = null;

if (XR) {
  XR.isSessionSupported("immersive-vr").then((isSupported) => {
    if (isSupported) {
      startXR();
    }
  });
}

function frameCallback(time, xrFrame) {
  xrSession.requestAnimationFrame(frameCallback);

  // Update and render the frame
}

async function startXR() {
  xrSession = XR.requestSession("immersive-vr");

  if (xrSession) {
    stopButton.onclick = stopXR;
    requestHandle = xrSession.requestAnimationFrame(frameCallback);
  }
}

function pauseXR() {
  if (xrSession && requestHandle) {
    xrSession.cancelAnimationFrame(requestHandle);
    requestHandle = null;
  }
}

Spezifikationen

Specification
WebXR Device API
# dom-xrsession-cancelanimationframe

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch