XRInputSourceEvent: frame-Eigenschaft

Limited availability

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

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

Die schreibgeschützte XRInputSourceEvent-Eigenschaft frame spezifiziert ein XRFrame-Objekt, das den Ereignisrahmen darstellt, in dem eine WebXR-Benutzereingabe aufgetreten ist. Somit kann es sich um ein Ereignis handeln, das in der Vergangenheit aufgetreten ist und nicht um ein aktuelles oder bevorstehendes Ereignis.

Wert

Ein XRFrame, der den Ereignisrahmen angibt, bei dem das durch das Objekt beschriebene Benutzereingabeereignis stattgefunden hat.

Verwendungshinweise

Der Ereignisrahmen entspricht nicht einem visuellen Frame, wie er an die Frame-Rendering-Callback-Funktion geliefert wird (siehe Rendering und der WebXR-Frame-Rendering-Callback für Details zum Callback). Stattdessen ist der durch die frame-Eigenschaft angegebene XRFrame eine Methode, um Zugang zur getPose()-Methode zu bieten, die verwendet werden kann, um die relativen Positionen der Objekte in der Szene zu dem Zeitpunkt zu erhalten, als das Ereignis aufgetreten ist.

Da es sich beim Ereignisrahmen jedoch nicht um einen Animationsrahmen handelt, gibt es keine Betrachterposition, die den aktuellen Blickwinkel des Betrachters darstellt; die Ergebnisse des Aufrufs von getViewerPose() werden eine XRViewerPose mit einer leeren views-Liste sein.

Beispiele

Dieser Code zeigt einen Handler für das selectstart-Ereignis, das die Pose des Zielstrahls aus dem Frame erhält und die Pose, die den Strahl darstellt (event.inputSource.targetRaySpace), auf den gesamten Referenzraum myRefSpace abbildet.

Wenn das Ergebnis nicht null ist, wird die Transformation der Zielstrahlpose an eine Funktion namens myCheckAndHandleHit() übergeben, um zu überprüfen, ob der Strahl auf etwas zeigte, als das "Select" ausgelöst wurde.

js
xrSession.onselectstart = (event) => {
  let targetRayPose = event.frame.getPose(
    event.inputSource.targetRaySpace,
    myRefSpace,
  );
  if (targetRayPose) {
    checkAndHandleHit(targetRayPose.transform);
  }
};

Spezifikationen

Specification
WebXR Device API
# dom-xrinputsourceevent-frame

Browser-Kompatibilität

BCD tables only load in the browser