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, 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 squeeze
Ereignis wird an eine XRSession
gesendet, wenn eine der Eingabequellen der Sitzung eine primäre Squeeze-Aktion abgeschlossen hat. Beispiele für gängige Arten von primären Aktionen sind das Drücken von Triggern oder Tasten durch Benutzer, das Antippen eines Touchpads, das Aussprechen eines Befehls oder das Ausführen einer erkennbaren Geste bei der Verwendung eines Video-Tracking-Systems oder eines tragbaren Controllers mit einem Beschleunigungssensor.
Einzelheiten darüber, 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
Neben den unten aufgeführten Eigenschaften sind auch Eigenschaften der übergeordneten Schnittstelle Event
verfügbar.
frame
Nur lesbar-
Ein
XRFrame
-Objekt, das die benötigten Informationen über den Ereignisrahmen bereitstellt, währenddessen das Ereignis aufgetreten ist. Dieser Frame könnte in der Vergangenheit gerendert worden sein und nicht der aktuelle Frame sein. Da dies ein Ereignis-Frame und kein Animations-Frame ist, können Sie nichtXRFrame.getViewerPose()
darauf aufrufen; stattdessen verwenden SiegetPose()
. inputSource
Nur lesbar-
Ein
XRInputSource
-Objekt, das angibt, welche Eingabequelle das Eingabeereignis generiert hat.
Beschreibung
Auslöser
Ausgelöst, wenn Benutzer den Controller drücken, eine Handbewegung machen, die das Greifen von etwas mimt, oder einen Trigger verwenden (drücken).
Anwendungsfälle
Das Ereignis squeezestart
zeigt an, dass der Benutzer mit einer Squeeze-Aktion begonnen hat.
Wenn die primäre Squeeze-Aktion erfolgreich endet, wird eine squeeze
-Ereignis an die Sitzung gesendet.
Ein squeezeend
Ereignis wird gesendet, um anzuzeigen, dass die Squeeze-Aktion nicht mehr im Gange ist. Dies wird gesendet, unabhängig davon, ob die Squeeze-Aktion erfolgreich war oder nicht.
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 darstellt, und sendet die Transformation der Pose an eine Funktion namens myHandleSqueezeWithRay()
.
Dieser Code behandelt das Squeeze als eine Momentaufnahme, die nicht ein fortlaufendes Tracking einer Aktivität beinhaltet. Wenn Sie ein Squeeze verfolgen müssen, das nicht sofortig ist, hören Sie auf die Ereignisse squeezestart
und squeezeend
, um festzustellen, wann die Squeeze-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 auch einen Handler für squeeze
-Ereignisse einrichten, indem Sie die onsqueeze
-Ereignishandlereigenschaft 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
BCD tables only load in the browser
Siehe auch
squeezestart
undsqueezeend
Ereignis