AbsoluteOrientationSensor
AbsoluteOrientationSensor 介面是 感測器 API 的一部分,它描述了裝置相對於地球參考座標系統的物理方向。
要使用此感測器,使用者必須透過 許可權 API 授予對 'accelerometer'、'gyroscope' 和 'magnetometer' 裝置感測器的許可權。
此功能可能會被您伺服器上設定的 Permissions Policy 阻止。
建構函式
AbsoluteOrientationSensor()-
建立一個新的
AbsoluteOrientationSensor物件。
例項屬性
沒有特定屬性;繼承自其祖先 OrientationSensor 和 Sensor 的屬性。
例項方法
沒有特定方法;繼承自其祖先 OrientationSensor 和 Sensor 的方法。
事件
沒有特定事件;繼承自其祖先 Sensor 的方法。
示例
基本示例
以下示例(大致基於 Intel 的 Orientation Phone 演示)例項化了一個 AbsoluteOrientationSensor,其頻率為每秒 60 次。在每次讀取時,它使用 OrientationSensor.quaternion 來旋轉手機的視覺化模型。
js
const options = { frequency: 60, referenceFrame: "device" };
const sensor = new AbsoluteOrientationSensor(options);
sensor.addEventListener("reading", () => {
// model is a Three.js object instantiated elsewhere.
model.quaternion.fromArray(sensor.quaternion).inverse();
});
sensor.addEventListener("error", (event) => {
if (event.error.name === "NotReadableError") {
console.log("Sensor is not available.");
}
});
sensor.start();
許可權示例
使用方向感測器需要請求多個裝置感測器的許可權。由於 Permissions 介面使用 Promise,因此請求許可權的一種好方法是使用 Promise.all。
js
const sensor = new AbsoluteOrientationSensor();
Promise.all([
navigator.permissions.query({ name: "accelerometer" }),
navigator.permissions.query({ name: "magnetometer" }),
navigator.permissions.query({ name: "gyroscope" }),
]).then((results) => {
if (results.every((result) => result.state === "granted")) {
sensor.start();
// …
} else {
console.log("No permissions to use AbsoluteOrientationSensor.");
}
});
規範
| 規範 |
|---|
| 方向感測器 # absoluteorientationsensor-interface |
瀏覽器相容性
載入中…