PositionSensorVRDevice: getState()-Methode

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

Nicht standardisiert: Diese Funktion ist nicht standardisiert und befindet sich nicht auf dem Weg zur Standardisierung. Verwenden Sie sie nicht auf Produktionsseiten, die dem Web ausgesetzt sind: Sie funktioniert nicht für alle Benutzer. Es kann auch große Inkompatibilitäten zwischen Implementierungen geben, und das Verhalten kann sich in Zukunft ändern.

Die Methode getState() des PositionSensorVRDevice-Interfaces gibt den aktuellen Zustand des Positionssensors für den aktuellen Frame zurück (z. B. innerhalb des aktuellen window.requestAnimationFrame-Callbacks) oder für den vorherigen Frame, enthalten in einem VRPose-Objekt. Dies ist die Methode, die Sie normalerweise verwenden möchten, im Gegensatz zu PositionSensorVRDevice.getImmediateState.

Syntax

js
getState()

Parameter

Keine.

Rückgabewert

Ein VRPose-Objekt.

Beispiele

Das folgende Beispiel verwendet die WebVR-API, um die Ansicht einer einfachen CanvasRenderingContext2D-Szene bei jedem Frame eines requestAnimationFrame-Schleifens zu aktualisieren.

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

Hier beziehen wir ein VRPose-Objekt mit getState() und speichern es in posState. Dann überprüfen wir, ob Positions- und Orientierungsinformationen im aktuellen Frame vorhanden sind, indem wir VRPose.position und VRPose.orientation verwenden (diese geben null zurück, wenn zum Beispiel das Head-Mounted Display ausgeschaltet ist oder nicht auf den Positionssensor zeigt, was zu einem Fehler führen würde).

Anschließend geben wir die x-, y- und z-Position sowie die Orientierungswerte zu Informationszwecken aus und verwenden diese Werte, um die Variablen xPos, yPos, zPos, xOrient, yOrient und zOrient zu aktualisieren, die zur Aktualisierung der Szenenwiedergabe in jedem Frame verwendet werden.

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
getState
DeprecatedNon-standard

Legend

Tip: you can click/tap on a cell for more information.

No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
User must explicitly enable this feature.

Siehe auch