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.
addEventListener("select", (event) => { })
onselect = (event) => { }
Ereignistyp
Ein XRInputSourceEvent
. Erbt von Event
.
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 SieXRFrame.getViewerPose()
nicht darauf aufrufen; stattdessen verwenden SiegetPose()
. 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()
.
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:
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 |