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 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.

Das WebXR-select-Ereignis wird an eine XRSession gesendet, wenn eine der Eingabequellen der Sitzung eine primäre Aktion 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 Ereignishandler-Eigenschaft.

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

onselect = (event) => { }

Ereignistyp

Ereigniseigenschaften

Zusätzlich zu den unten aufgeführten Eigenschaften sind Eigenschaften der übergeordneten Schnittstelle Event verfügbar.

frame Schreibgeschützt

Ein XRFrame-Objekt, das die benötigten Informationen über das Ereignis-Frame bereitstellt, während dem das Ereignis auftrat. Dieses Frame könnte in der Vergangenheit gerendert worden sein, statt ein aktuelles zu sein. Da es sich um ein Ereignis-Frame und nicht um ein Animations-Frame handelt, können Sie XRFrame.getViewerPose() nicht darauf aufrufen; stattdessen verwenden Sie getPose().

inputSource Schreibgeschützt

Ein XRInputSource-Objekt, das angibt, welche Eingabequelle das Eingabeereignis generiert hat.

Beschreibung

Auslöser

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

Anwendungsfälle

Die selectstart- und selectend-Ereignisse informieren Sie darüber, wann Sie dem Benutzer möglicherweise etwas anzeigen möchten, das angibt, dass die primäre Aktion ausgeführt wird. Dies könnte das Zeichnen eines Controllers mit dem aktivierten Knopf in einer neuen Farbe sein oder das Zeigen des erfassten und bewegten Objekts, 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 aufwendig wie das Platzieren eines gezogenen Objekts an einem neuen Ort.

Wenn Ihre primäre Aktion eine einfache Triggeraktion ist und Sie nichts animieren müssen, während der Trigger aktiviert ist, können Sie die selectstart- und selectend-Ereignisse ignorieren und auf das Startereignis reagieren.

Beispiele

Das folgende Beispiel verwendet addEventListener(), um einen Handler für das select-Ereignis einzurichten. Der Handler holt die Pose, 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-Ereignishandlereigenschaft des XRSession-Objekts auf eine Funktion setzen, die das Ereignis behandelt:

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

Siehe auch