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