XRSession: squeeze-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 squeeze wird an eine XRSession gesendet, wenn eine ihrer Eingabequellen eine primäre Squeeze-Aktion abgeschlossen hat. Beispiele für solche Aktionen sind das Drücken von Triggern oder Tasten, das Antippen eines Touchpads, das Sprechen eines Befehls oder eine erkennbare Geste bei der Verwendung eines Video-Tracking-Systems oder eines Handcontrollers mit Beschleunigungssensor.
Weitere Informationen dazu, wie die Ereignisse squeezestart, squeeze und squeezeend funktionieren und wie Sie darauf reagieren sollten, finden Sie unter Eingaben und Eingabequellen.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("squeeze", (event) => { })
Alternativ können Sie der Event-Handler-Eigenschaft der Schnittstelle eine Funktion zuweisen:
onsqueeze = (event) => { }
Ereignistyp
Ein XRInputSourceEvent. Erbt von Event.
Beschreibung
>Auslöser
Wird ausgelöst, wenn Benutzer den Controller zusammendrücken, eine Greifbewegung mit der Hand nachahmen oder einen Trigger betätigen.
Anwendungsfälle
Das Ereignis squeezestart zeigt an, dass der Benutzer eine Squeeze-Aktion begonnen hat.
Wenn die primäre Squeeze-Aktion erfolgreich endet, wird ein squeeze-Ereignis an die Sitzung gesendet.
Ein squeezeend-Ereignis zeigt an, dass die Squeeze-Aktion nicht mehr ausgeführt wird. Es wird unabhängig davon gesendet, ob die Aktion erfolgreich war.
Beispiele
Das folgende Beispiel verwendet addEventListener(), um einen Handler für das squeeze-Ereignis einzurichten. Der Handler ruft die Pose ab, die den Zielstrahl für tracked-pointer-Eingaben repräsentiert, und übergibt die Transformation der Pose an eine Funktion namens myHandleSqueezeWithRay().
Dieser Code behandelt die Squeeze-Aktion als augenblickliche Aktion, bei der keine fortlaufende Aktivität verfolgt wird. Wenn Sie eine Squeeze-Aktion verfolgen müssen, die nicht augenblicklich ist, überwachen Sie die Ereignisse squeezestart und squeezeend, um zu erkennen, wann die Aktion beginnt und endet.
xrSession.addEventListener("squeeze", (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
});
Sie können einen Handler für squeeze-Ereignisse auch einrichten, indem Sie der Event-Handler-Eigenschaft onsqueeze des XRSession-Objekts eine Funktion zuweisen, die das Ereignis verarbeitet. Beachten Sie jedoch, dass dadurch gegebenenfalls andere über onsqueeze hinzugefügte Event-Listener ersetzt werden:
xrSession.onsqueeze = (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
};
Spezifikationen
| Spezifikation |
|---|
| WebXR Device API> # eventdef-xrsession-squeeze> |
| WebXR Device API> # dom-xrsession-onsqueeze> |
Browser-Kompatibilität
Siehe auch
- Ereignisse
squeezestartundsqueezeend