头闻号

吴立全

室内涂料|室外涂料|装饰建材代理加盟|木工油漆|其他建筑涂料|综合性公司

首页 > 新闻中心 > 科技常识:Html5+JS实现手机摇一摇功能
科技常识:Html5+JS实现手机摇一摇功能
发布时间:2024-09-22 04:25:35        浏览次数:1        返回列表

今天小编跟大家讲解下有关Html5+JS实现手机摇一摇功能 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关Html5+JS实现手机摇一摇功能 的相关资料,希望小伙伴们看了有所帮助。

HTML5一个重要特性就是DeviceOrientation 它将底层的方向传感器和运动传感器进行了高级封装 提供了DOM事件的支持。这个特性包括两种事件:

1、 deviceOrientation:封装了方向传感器数据的事件 可以获取手机静止状态下的方向数据 例如手机所处角度、方位、朝向等。

2、 deviceMotion:封装了运动传感器数据的事件 可以获取手机运动状态下的运动加速度等数据。 使用它我们能够很容易的实现重力感应、指南针等有趣的功能 在手机上将非常有用。例如Opera H5体验版里的重力感应球示例就是通过监听DeviceOrientation API的deviceOrientation事件来实现的。 其实它还能帮助我们在网页上实现一个手机应用里非常常见而时尚的功能:手机摇一摇。

DeviceMotionEvent(设备运动事件)返回设备有关于加速度和旋转的相关信息。加速度的数据将包含三个轴:x y和z(示意如下图所示 x轴横向贯穿手机屏幕或者笔记本键盘 y轴纵向贯穿手机屏幕或笔记本键盘 z轴垂直于手机屏幕或笔记本键盘)。因为有些设备可能没有硬件来排除重力的影响 该事件会返回两个属性 accelerationIncludingGravity(含重力的加速度)和acceleration(加速度) 后者排除了重力的影响。

1. [代码]监听运动传感事件 2. [代码]获取含重力的加速度 3. [代码]核心方法实现代码

HTML5一个重要特性就是DeviceOrientation 它将底层的方向传感器和运动传感器进行了高级封装 提供了DOM事件的支持。这个特性包括两种事件:

1、 deviceOrientation:封装了方向传感器数据的事件 可以获取手机静止状态下的方向数据 例如手机所处角度、方位、朝向等。

2、 deviceMotion:封装了运动传感器数据的事件 可以获取手机运动状态下的运动加速度等数据。使用它我们能够很容易的实现重力感应、指南针等有趣的功能 在手机上将非常有用。例如Opera H5体验版里的重力感应球示例就是通过监听DeviceOrientationAPI的deviceOrientation事件来实现的。

其实它还能帮助我们在网页上实现一个手机应用里非常常见而时尚的功能:手机摇一摇。

DeviceMotionEvent(设备运动事件)返回设备有关于加速度和旋转的相关信息。加速度的数据将包含三个轴:x y和z(示意如下图所示 x轴横向贯穿手机屏幕或者笔记本键盘 y轴纵向贯穿手机屏幕或笔记本键盘 z轴垂直于手机屏幕或笔记本键盘)。因为有些设备可能没有硬件来排除重力的影响 该事件会返回两个属性 accelerationIncludingGravity(含重力的加速度)和acceleration(加速度) 后者排除了重力的影响。

1. [代码]监听运动传感事件 复制代码代码如下:if (window.DeviceMotionEvent) {window.addEventListener(‘devicemotion’,deviceMotionHandler, false);}2. [代码]获取含重力的加速度 复制代码代码如下:function deviceMotionHandler(eventData) {var acceleration =eventData.accelerationIncludingGravity;}3. [代码]核心方法实现代码 复制代码代码如下:var SHAKE_THRESHOLD = xxx;var last_update = 0;var x, y, z, last_x, last_y, last_z;</p><p>function deviceMotionHandler(eventData) {var acceleration =eventData.accelerationIncludingGravity;</p><p>var curTime = newDate().getTime();</p><p>if ((curTime – lastUpdate)> 100) {</p><p>var diffTime = curTime -last_update;last_update = curTime;</p><p>x = acceleration.x;y = acceleration.y;z = acceleration.z;</p><p>var speed = Math.abs(x +y + z – last_x – last_y – last_z) / diffTime * 10000;</p><p>if (speed > SHAKE_THRESHOLD) {alert(“shaked!”);}last_x = x;last_y = y;last_z = z;}}

来源:爱蒂网