Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

XRSession: select-Ereignis

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

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

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

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

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

Alternativ können Sie der Event-Handler-Eigenschaft des Interfaces eine Funktion zuweisen:

js
onselect = (event) => { }

Ereignistyp

Ein XRInputSourceEvent. Erbt von Event.

Event XRInputSourceEvent

Beschreibung

Auslöser

Das Ereignis wird ausgelöst, wenn ein Benutzer einen Auslöser oder eine Taste drückt, auf ein Touchpad tippt, einen Befehl spricht oder bei Verwendung eines Video-Tracking-Systems oder eines Handcontrollers mit Beschleunigungssensor eine erkennbare Geste ausführt.

Anwendungsfälle

Die Ereignisse selectstart und selectend zeigen an, wann es sinnvoll sein könnte, dem Benutzer darzustellen, dass die primäre Aktion gerade stattfindet. Beispielsweise könnten Sie einen Controller mit der aktivierten Taste in einer anderen Farbe zeichnen oder anzeigen, wie das anvisierte Objekt gegriffen und bewegt wird. Die Darstellung beginnt, wenn selectstart eintrifft, und endet, wenn selectend empfangen wird.

Das Ereignis select teilt Ihrem Code mit, dass der Benutzer eine Aktion abgeschlossen hat. Das kann etwas so Einfaches sein wie das Werfen eines Objekts oder das Betätigen des Abzugs einer Waffe in einem Spiel – oder etwas Aufwendigeres wie das Platzieren eines gezogenen Objekts an einer neuen Position.

Wenn Ihre primäre Aktion lediglich durch einen Auslöser aktiviert wird und Sie während dessen Betätigung nichts animieren müssen, können Sie die Ereignisse selectstart und selectend ignorieren und auf das Startereignis reagieren.

Beispiele

Das folgende Beispiel verwendet addEventListener(), um einen Handler für das Ereignis select einzurichten. Der Handler ruft die Pose ab, die den Zielstrahl für Eingaben vom Typ tracked-pointer darstellt, und übergibt 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 einen Handler für select-Ereignisse auch einrichten, indem Sie der Event-Handler-Eigenschaft onselect des XRSession-Objekts eine Funktion zuweisen, die das Ereignis verarbeitet. Beachten Sie jedoch, dass dadurch gegebenenfalls andere über onselect hinzugefügte Event-Listener ersetzt werden:

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

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

Browser-Kompatibilität

Siehe auch