XRSession: squeeze 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 squeeze Ereignis wird an eine XRSession gesendet, wenn eine der Eingabequellen der Sitzung eine primäre Quetschaktion abgeschlossen hat. Beispiele für häufige Arten von primären Aktionen sind das Drücken von Triggern oder Tasten, das Antippen eines Touchpads, das Sprechen eines Befehls oder das Ausführen einer erkennbaren Geste bei der Verwendung eines Videosystems zur Verfolgung oder eines Hand-Controllers mit Beschleunigungsmesser.
Einzelheiten 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 Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("squeeze", (event) => { })
onsqueeze = (event) => { }
Ereignistyp
Ein XRInputSourceEvent. Erbt von Event.
Ereigniseigenschaften
Zusätzlich zu den unten aufgeführten Eigenschaften sind die Eigenschaften der übergeordneten Schnittstelle Event verfügbar.
frameSchreibgeschützt-
Ein
XRFrameObjekt, das die erforderlichen Informationen über den Ereignis-Frame bereitstellt, in dem das Ereignis aufgetreten ist. Dieser Frame könnte in der Vergangenheit gerendert worden sein, anstatt ein aktueller Frame zu sein. Da dies ein Ereignis-Frame ist, kein Animations-Frame, können Sie nichtXRFrame.getViewerPose()darauf aufrufen; verwenden Sie stattdessengetPose(). inputSourceSchreibgeschützt-
Ein
XRInputSourceObjekt, das anzeigt, welche Eingabequelle das Eingabeereignis erzeugt hat.
Beschreibung
>Auslöser
Ausgelöst, wenn Benutzer den Controller drücken, eine Handbewegung ausführen, die etwas Greifen imitiert, oder einen Trigger benutzen (drücken).
Anwendungsfälle
Das squeezestart Ereignis zeigt an, dass der Benutzer eine Quetschaktion gestartet hat.
Wenn die primäre Quetschaktion erfolgreich abgeschlossen wird, wird der Sitzung ein squeeze Ereignis gesendet.
Ein squeezeend Ereignis wird gesendet, um anzuzeigen, dass die Quetschaktion nicht mehr im Gange ist. Dies wird gesendet, unabhängig davon, ob die Quetschaktion erfolgreich war oder nicht.
Beispiele
Das folgende Beispiel verwendet addEventListener(), um einen Handler für das squeeze 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 myHandleSqueezeWithRay().
Dieser Code behandelt das Quetschen als eine sofortige Aktion, die keine Verfolgung einer laufenden Aktivität erfordert. Wenn Sie eine Quetschaktion verfolgen müssen, die nicht sofort ist, hören Sie auf die squeezestart und squeezeend Ereignisse, um zu erkennen, wann die Quetschaktion 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 auch einen Handler für squeeze Ereignisse einrichten, indem Sie die onsqueeze Ereignis-Handler-Eigenschaft des XRSession Objekts auf eine Funktion setzen, die das Ereignis behandelt:
xrSession.onsqueeze = (event) => {
if (event.inputSource.targetRayMode === "tracked-pointer") {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
myHandleSqueezeWithRay(targetRayPose.transform);
}
}
};
Spezifikationen
| Specification |
|---|
| WebXR Device API> # eventdef-xrsession-squeeze> |
| WebXR Device API> # dom-xrsession-onsqueeze> |
Browser-Kompatibilität
Loading…
Siehe auch
squeezestartundsqueezeendEreignis