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.

js
addEventListener("squeeze", (event) => { })

onsqueeze = (event) => { }

Ereignistyp

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 nicht XRFrame.getViewerPose() darauf aufrufen; verwenden Sie stattdessen getPose().

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.

js
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:

js
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