Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 eineexperimentelle Technologie
Überprüfen Sie dieBrowser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Das WebXR-select-Ereignis wird an eineXRSession gesendet, wenn eine der Eingabequellen der Sitzung eineprimäre Aktion abgeschlossen hat.
Dasbeforexrselect wird vor diesem Ereignis ausgelöst und kann verhindern, dass dieses Ereignis ausgelöst wird.
In diesem Artikel
Syntax
Verwenden Sie den Ereignisnamen in Methoden wieaddEventListener(), oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("select", (event) => { })onselect = (event) => { }Ereignistyp
EinXRInputSourceEvent. Erbt vonEvent.
Ereigniseigenschaften
Zusätzlich zu den unten aufgeführten Eigenschaften sind Eigenschaften der übergeordneten SchnittstelleEvent verfügbar.
frameSchreibgeschütztEin
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 einEreignis-Frame und nicht um einAnimations-Frame handelt, können SieXRFrame.getViewerPose()nicht darauf aufrufen; stattdessen verwenden SiegetPose().inputSourceSchreibgeschütztEin
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
Dieselectstart- undselectend-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 wennselectstart eintrifft und endend wennselectend empfangen wird.
Dasselect-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 dieselectstart- undselectend-Ereignisse ignorieren und auf das Startereignis reagieren.
Beispiele
Das folgende Beispiel verwendetaddEventListener(), um einen Handler für dasselect-Ereignis einzurichten. Der Handler holt die Pose, die den Zielstrahl fürtracked-pointer-Eingaben darstellt, und sendet die Transformation der Pose an eine Funktion namensmyHandleSelectWithRay().
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ürselect-Ereignisse einrichten, indem Sie dieonselect-Ereignishandlereigenschaft desXRSession-Objekts auf eine Funktion setzen, die das Ereignis behandelt:
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> |