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.
frame
Schreibgeschützt-
Ein
XRFrame
Objekt, 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()
. inputSource
Schreibgeschützt-
Ein
XRInputSource
Objekt, 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
Siehe auch
squeezestart
undsqueezeend
Ereignis