XRInputSourceEvent: frame-Eigenschaft
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die schreibgeschützte XRInputSourceEvent
-Eigenschaft frame
spezifiziert ein XRFrame
-Objekt, das den Ereignisrahmen darstellt, in dem eine WebXR-Benutzereingabe aufgetreten ist. Somit kann es sich um ein Ereignis handeln, das in der Vergangenheit aufgetreten ist und nicht um ein aktuelles oder bevorstehendes Ereignis.
Wert
Ein XRFrame
, der den Ereignisrahmen angibt, bei dem das durch das Objekt beschriebene Benutzereingabeereignis stattgefunden hat.
Verwendungshinweise
Der Ereignisrahmen entspricht nicht einem visuellen Frame, wie er an die Frame-Rendering-Callback-Funktion geliefert wird (siehe Rendering und der WebXR-Frame-Rendering-Callback für Details zum Callback). Stattdessen ist der durch die frame
-Eigenschaft angegebene XRFrame
eine Methode, um Zugang zur getPose()
-Methode zu bieten, die verwendet werden kann, um die relativen Positionen der Objekte in der Szene zu dem Zeitpunkt zu erhalten, als das Ereignis aufgetreten ist.
Da es sich beim Ereignisrahmen jedoch nicht um einen Animationsrahmen handelt, gibt es keine Betrachterposition, die den aktuellen Blickwinkel des Betrachters darstellt; die Ergebnisse des Aufrufs von getViewerPose()
werden eine XRViewerPose
mit einer leeren views
-Liste sein.
Beispiele
Dieser Code zeigt einen Handler für das selectstart
-Ereignis, das die Pose des Zielstrahls aus dem Frame erhält und die Pose, die den Strahl darstellt (event.inputSource.targetRaySpace
), auf den gesamten Referenzraum myRefSpace
abbildet.
Wenn das Ergebnis nicht null
ist, wird die Transformation der Zielstrahlpose an eine Funktion namens myCheckAndHandleHit()
übergeben, um zu überprüfen, ob der Strahl auf etwas zeigte, als das "Select" ausgelöst wurde.
xrSession.onselectstart = (event) => {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
checkAndHandleHit(targetRayPose.transform);
}
};
Spezifikationen
Specification |
---|
WebXR Device API # dom-xrinputsourceevent-frame |
Browser-Kompatibilität
BCD tables only load in the browser