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 |
浏览器兼容性
加载中…