Element: requestPointerLock() 方法
Element 介面的 requestPointerLock() 方法允許您非同步地請求鎖定給定元素的指標。
為了跟蹤請求的成功或失敗,有必要在 Document 級別監聽 pointerlockchange 和 pointerlockerror 事件。
注意: 在當前規範中,requestPointerLock() 僅透過觸發 pointerlockchange 或 pointerlockerror 事件來傳達請求的成功或失敗。 對規範的提議更新 更新了 requestPointerLock() 以返回一個 Promise,該 Promise 傳達成功或失敗。此頁面記錄了返回 Promise 的版本。但是,請注意此版本尚未成為標準,並非所有瀏覽器都已實現。有關更多資訊,請參閱 瀏覽器相容性。
語法
requestPointerLock()
requestPointerLock(options)
引數
options可選-
一個選項物件,其中可以包含以下屬性
unadjustedMovement可選-
停用作業系統級別的滑鼠加速調整,而是訪問原始滑鼠輸入。預設值為
false;將其設定為true將停用滑鼠加速。
返回值
安全
呼叫 requestPointerLock() 時需要 瞬時啟用。使用者必須與頁面或 UI 元素進行互動,此功能才能正常工作。此外,目標元素的關聯文件必須處於活動狀態。
如果呼叫 requestPointerLock() 緊接著透過預設的解鎖手勢(而不是透過 exitPointerLock() 呼叫)釋放了指標鎖,則呼叫將失敗,即使存在 瞬時啟用。
如果呼叫 requestPointerLock() 時還呼叫了 requestFullscreen(),則必須先呼叫 requestPointerLock(),因為 requestFullscreen() 會消耗 瞬時啟用 的狀態。
在 <iframe> 元素中呼叫 requestPointerLock() 時,必須新增 allow-pointer-lock 沙箱令牌。此外,其他 <iframe> 元素中的其他元素不得處於指標鎖定模式。
示例
指標鎖定通常用於線上遊戲中,當您希望滑鼠移動專注於控制遊戲,而不受滑鼠指標四處移動、移出遊戲區域或到達視窗邊緣的干擾時。
要啟用指標鎖定,您需要讓使用者以某種方式與 UI 進行互動,例如透過按下按鈕或遊戲畫布本身。
canvas.addEventListener("click", async () => {
await canvas.requestPointerLock();
});
作業系統預設啟用滑鼠加速,這在您有時需要緩慢精確移動(想想圖形軟體包)但又希望透過更快的滑鼠移動(想想滾動和選擇多個檔案)來移動大距離時很有用。然而,對於一些第一人稱視角遊戲,原始滑鼠輸入資料更適合控制相機旋轉——無論滑鼠移動是快還是慢,相同的距離移動都會導致相同的旋轉。據專業遊戲玩家稱,這可以帶來更好的遊戲體驗和更高的準確性。
要停用作業系統級別的滑鼠加速並訪問原始滑鼠輸入,您可以將 unadjustedMovement 設定為 true
canvas.addEventListener("click", async () => {
await canvas.requestPointerLock({
unadjustedMovement: true,
});
});
有關更多示例程式碼,請參閱
規範
| 規範 |
|---|
| 指標鎖定 2.0 # dom-element-requestpointerlock |
瀏覽器相容性
載入中…