XRSession: select Ereignis

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, bevor Sie diese produktiv verwenden.

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

Das WebXR select Ereignis wird an eine XRSession gesendet, wenn eine der Eingabequellen der Session eine Primäraktion abgeschlossen hat.

Das beforexrselect wird vor diesem Ereignis ausgelöst und kann verhindern, dass dieses Ereignis ausgelöst wird.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener(), oder setzen Sie eine Ereignis-Handler-Eigenschaft.

js
addEventListener("select", (event) => {});

onselect = (event) => {};

Ereignistyp

Ereigniseigenschaften

Neben den unten aufgelisteten Eigenschaften sind auch die Eigenschaften der Elternschnittstelle, Event, verfügbar.

frame Nur lesbar

Ein XRFrame Objekt, das die benötigten Informationen über den Ereignisrahmen bereitstellt, während dem das Ereignis auftrat. Dieser Rahmen könnte in der Vergangenheit gerendert worden sein, anstatt ein aktueller Rahmen zu sein. Da dies ein Ereignis-Rahmen und kein Animations-Rahmen ist, kann XRFrame.getViewerPose() nicht darauf aufgerufen werden; stattdessen verwenden Sie getPose().

inputSource Nur lesbar

Ein XRInputSource Objekt, das angibt, welche Eingabequelle das Eingabeereignis erzeugt hat.

Beschreibung

Auslösung

Ausgelöst, wenn ein Benutzer Trigger oder Tasten drückt, ein Touchpad berührt, einen Befehl spricht oder eine erkennbare Geste ausführt, wenn er ein Video-Tracking-System oder einen Handheld-Controller mit einem Beschleunigungsmesser verwendet.

Anwendungsfälle

Die selectstart und selectend Ereignisse geben an, wann Sie dem Benutzer anzeigen möchten, dass die Primäraktion ausgeführt wird. Dies könnte das Zeichnen eines Controllers mit der aktivierten Taste in einer neuen Farbe sein oder das Zeigen des Zielobjekts, das gegriffen und bewegt wird, beginnend wenn selectstart eintrifft und endend, wenn selectend empfangen wird.

Das select Ereignis teilt Ihrem Code mit, dass der Benutzer eine Aktion abgeschlossen hat. Dies könnte so einfach sein wie das Werfen eines Objekts oder das Drücken des Abzugs einer Waffe in einem Spiel oder so komplex wie das Platzieren eines gezogenen Objekts an einem neuen Ort.

Wenn Ihre Primäraktion eine einfache Triggeraktion ist und Sie nichts animieren müssen, während der Trigger betätigt ist, können Sie die selectstart und selectend Ereignisse ignorieren und auf das Start-Ereignis reagieren.

Beispiele

Das folgende Beispiel verwendet addEventListener(), um einen Handler für das select Ereignis einzurichten. Der Handler ruft die Pose ab, die den Zielstrahl für tracked-pointer Eingaben darstellt, und sendet die Transformation der Pose an eine Funktion namens myHandleSelectWithRay().

js
xrSession.addEventListener("select", (event) => {
  if (event.inputSource.targetRayMode === "tracked-pointer") {
    let targetRayPose = event.frame.getPose(
      event.inputSource.targetRaySpace,
      myRefSpace,
    );
    if (targetRayPose) {
      myHandleSelectWithRay(targetRayPose.transform);
    }
  }
});

Sie können auch einen Handler für select Ereignisse einrichten, indem Sie die onselect Ereignis-Handler-Eigenschaft des XRSession Objekts auf eine Funktion setzen, die das Ereignis verarbeitet:

js
xrSession.onselect = (event) => {
  if (event.inputSource.targetRayMode === "tracked-pointer") {
    let targetRayPose = event.frame.getPose(
      event.inputSource.targetRaySpace,
      myRefSpace,
    );
    if (targetRayPose) {
      myHandleSelectWithRay(targetRayPose.transform);
    }
  }
};

Spezifikationen

Specification
WebXR Device API
# eventdef-xrsession-select
WebXR Device API
# dom-xrsession-onselect

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch