XRInputSourceEvent

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

WebXR Device APIXRInputSourceEvent 介面描述了在 WebXR 使用者輸入裝置(例如手柄、注視跟蹤系統或運動跟蹤系統)上發生的事件。更具體地說,它們代表了 XRInputSource 狀態的變化。

要了解更多關於在 WebXR 專案中處理輸入的資訊,請參閱文章 輸入和輸入源

Event XRInputSourceEvent

建構函式

XRInputSourceEvent()

建立並返回一個新的 XRInputSourceEvent 物件,其屬性與提供的 eventInitDict 字典中的屬性匹配。

例項屬性

frame 只讀

一個 XRFrame 物件,提供有關事件發生幀的必要資訊。此幀可能是在過去渲染的,而不是當前幀。因為這是一個事件幀,而不是動畫幀,所以您不能在其上呼叫 XRFrame 方法 getViewerPose();而是使用 getPose()

inputSource 只讀

一個 XRInputSource 物件,指示是哪個輸入源生成了此輸入事件。

例項方法

XRInputSourceEvent 介面不定義任何方法;但是,有幾個方法是從父介面 Event 繼承而來的。

事件型別

select

當傳送輸入源完全完成一項 主要操作時,傳送到 XRSession

selectend

當正在進行的主要操作結束,或者當具有正在進行的主要操作的輸入源與系統斷開連線時,傳送到 XRSession

selectstart

當輸入源開始其 主要操作時,傳送到 XRSession,表示使用者已開始一項命令式輸入,例如按下扳機或按鈕、發出語音命令、輕觸觸控板等。

squeeze

當傳送輸入源完全完成一項 主要擠壓操作時,傳送到 XRSession

squeezeend

當正在進行的 主要擠壓操作結束,或者當具有正在進行的擠壓操作的輸入源斷開連線時,傳送到 XRSession

squeezestart

當輸入源開始其 主要擠壓操作時,傳送到 XRSession,表示使用者已開始抓取、擠壓或握住控制器。

示例

以下程式碼設定了主要操作事件的事件處理器,以便在使用者單擊(射擊/點選/等)場景中的物件時確定。

js
xrSession.addEventListener("select", (event) => {
  let targetRayPose = event.frame.getPose(
    event.inputSource.targetRaySpace,
    myRefSpace,
  );

  if (targetRayPose) {
    let hit = myHitTest(targetRayPose.transform);
    if (hit) {
      /* handle the hit */
    }
  }
});

規範

規範
WebXR Device API
# xrinputsourceevent-interface

瀏覽器相容性