HTML5实现“摇一摇”效果

在HTML5中,DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间,通过改时间可以获取设备的运动状态、加速度等数据(另还有deviceOrientation事件提供了设备角度、朝向等信息)。

而通过DeviceMotion对设备运动状态的判断,则可以帮助我们在网页上就实现“摇一摇”的交互效果。

事件监听

演示地址:http://dtop.powereasy.net/UploadFiles/xzhihong/shake/demo.htm

把监听事件绑定给 deviceMotionHandler

运行代码编辑代码查看源代码

资源添加向导

if (window.DeviceMotionEvent) {
window.addEventListener(‘devicemotion‘, deviceMotionHandler, false);
} else {
alert(‘本设备不支持devicemotion事件‘);
}

获取设备加速度信息 accelerationIncludingGravity

运行代码编辑代码查看源代码

资源添加向导

function deviceMotionHandler(eventData) {
var acceleration = eventData.accelerationIncludingGravity,
x, y, z;
x = acceleration.x;
y = acceleration.y;
z = acceleration.z;
document.getElementById("status").innerHTML = "x:"+x+"<br />y:"+y+"<br />z:"+z;
}

将加速度信息打印置页面,通过演示地址可以看到随着设备的移动,屏幕上数字的变化。

摇晃判断

演示地址:http://dtop.powereasy.net/UploadFiles/xzhihong/shake/demo_1.htm

“摇一摇”的动作既“一定时间内设备了一定距离”,因此通过监听上一步获取到的x, y, z 值在一定时间范围内的变化率,即可进行设备是否有进行晃动的判断。而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。

运行代码编辑代码查看源代码

资源添加向导

var SHAKE_THRESHOLD = 800;
var last_update = 0;
var x = y = z = last_x = last_y = last_z = 0;

if (window.DeviceMotionEvent) {
  window.addEventListener(‘devicemotion‘, deviceMotionHandler, false);
} else {
  alert(‘本设备不支持devicemotion事件‘);
}

function deviceMotionHandler(eventData) {
  var acceleration = eventData.accelerationIncludingGravity;
  var curTime = new Date().getTime();
  if ((curTime - last_update) > 100) {
    var diffTime = curTime - last_update;
    last_update = curTime;
    x = acceleration.x;
    y = acceleration.y;
    z = acceleration.z;
    var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000;
    var status = document.getElementById("status");

    if (speed > SHAKE_THRESHOLD) {
      var text = "x:"+x+"<br />y:"+y+"<br />z:"+z+"<br />speed:"+speed;
      status.innerHTML = text;
    }

    last_x = x;
    last_y = y;
    last_z = z;
  }
}

100毫秒进行一次位置判断,若前后x, y, z间的差值的绝对值和时间比率超过了预设的阈值,则判断设备进行了摇晃操作。

然后通过上面2个演示,然后再增加点样式效果,即可模拟一个简单的微信摇一摇界面。

应用演示:简易模拟微信摇一摇

演示地址:http://dtop.powereasy.net/UploadFiles/xzhihong/shake/demo_2.htm

时间: 2024-10-08 09:04:34

HTML5实现“摇一摇”效果的相关文章

HTML5手机重力与方向感应的应用——摇一摇效果

http://www.helloweba.com/view-blog-287.html HTML5有一个重要特性:DeviceOrientation,它将底层的方向和运动传感器进行了高级封装,它使我们能够很容易的实现重力感应.指南针等有趣的功能.本文将结合实例给大家介绍使用HTML5的重力运动和方向传感器实现手机摇一摇效果. DeviceOrientation包括两个事件: 1.deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方

HTML5 重力感应效果,实现摇一摇效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <meta name="format-detect

手机摇一摇效果-html5

1.手机摇一摇效果实现 2.播放声音 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>摇一摇功能</title

html5摇一摇[转]

写在前面 年底了,有些公司会出一个摇奖的活动,今天在家没事就搜了一下这方面的资料. 原文地址:http://www.cnblogs.com/waitingbar/p/4682215.html 测试 效果还行. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>摇一摇</title> 6 <style type="

html5实现微信摇一摇功能

在HTML5中,DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间,通过改时间可以获取设备的运动状态.加速度等数据(另还有deviceOrientation事件提供了设备角度.朝向等信息).而通过DeviceMotion对设备运动状态的判断,则可以帮助我们在网页上就实现“摇一摇”的交互效果. 运动事件监听 if (window.DeviceMotionEvent) { window.addEventListener('devicemotion',

HTML5 实现手机摇一摇

HTML5新增了一些JavaScript API接口,比如地理定位.重力感应等.今天主要介绍devicemotion事件(设备事件),它提供设备的加速信息,表示为定义在设备上的坐标系.其还提供了设备在坐标系中的自转速率.若可行的话,事件应该提供设备重心处的加速信息.本文给大家讲解了HTML5实现手机摇一摇的效果. 手机摇一摇的实现思路: 1.检测设备是否支持重力传感: 1 // 监听运动传感事件,查看是否支持硬件运动 2 3 if (window.DeviceMotionEvent) { 4 5

HTML5 摇一摇加强版之一次失败的探索

最近在看设备传感器的API,当然也少不了研究一下让微信称神的“摇一摇”了.关于“摇一摇”的实现,网上很多资料所以不详细说了,但总是有布局.效果不全等各种问题,所以作为一名资深copypaster,代码肯定是要贴的: 源码在此 核心代码是这一段: this.deviceMotionHandler = function(eventData) { var acceleration = eventData.acceleration; var curTime = new Date().getTime();

利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

摇一摇JS脚本逻辑:接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', handler, !1); lastTime = new Date(); } else { alert('你的浏览器不支持摇一摇功能.'); } devicemotion

Android摇一摇振动效果Demo

前言 在微信刚流行的时候,在摇一摇还能用来那啥的时候,我也曾深更半夜的拿着手机晃一晃.当时想的最多的就是.我靠,为神马摇一下须要用这么大的力度,当时我想可能腾讯认为那是个人性的设计.后来才发觉尼马重力加速度设得太高了吧.扯多了.近期项目里须要解决一个振动的问题,因此在学习振动实现的过程中,写了个demo实现了摇一摇振动的效果,这里记录一下. 原理 摇一摇功能的基本原理就是:利用手机的加速度传感器,当加速度到达某个值时.触发某个事件,比如手机振动.UI改变等.这里要实现该功能,首先须要了解一下An