html5重力感应效果——摇一摇

武汉/网页设计师/9年前/1150浏览
html5重力感应效果——摇一摇

HTML5有一个重要特性:DeviceOrientation,它将底层的方向和运动传感器进行了高级封装,它使我们能够很容易的实现重力感应、指南针等有趣的功能。本文将结合实例给大家介绍使用HTML5的重力运动和方向传感器实现手机摇一摇效果。

HTML5有一个重要特性:DeviceOrientation,它将底层的方向和运动传感器进行了高级封装,它使我们能够很容易的实现重力感应、指南针等有趣的功能。本文将结合实例给大家介绍使用HTML5的重力运动和方向传感器实现手机摇一摇效果。



DeviceOrientation包括两个事件:

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

2、deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。
HTML

页面上有一个div#hand,用来放置一个手摇的图片,div#result用来展示摇动后的结果信息。

  1. <div id="hand" class="hand hand-animate"></div>

  2. <div id="result"></div>

复制代码


我们可以使用CSS3来增强页面效果,使用-webkit-animation动画效果实现手摇图片的动态效果,具体请下载源代码查看。
Javas cript

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

HTML5判断设备晃动的代码我们使用已经封装好的shake.js,项目地址:https://github.com/alexgibson/shake.js

  1. <s cript src="shake.js"></s cript>

复制代码


首先实例化Shake,然后启动开始监听设备运动情况,监听设备运动,回调监听结果:shakeEventDidOccur。

  1. window.onload = function() {

  2.     var myShakeEvent = new Shake({

  3.         threshold: 15

  4.     });


  5.     myShakeEvent.start();


  6.     window.addEventListener('shake', shakeEventDidOccur, false);


  7.     function shakeEventDidOccur () {

  8.         var result = document.getElementById("result");

  9.         result.className = "result";

  10.         var arr = ['妹子一枚','福利图片一套','码农笔记一本','土豪金一台'];

  11.         var num = Math.floor(Math.random()*4);

  12.         result.innerHTML = "恭喜,摇得"+arr[num]+"!";

  13.         setTimeout(function(){

  14.             result.className = "result result-show";

  15.         }, 1000);

  16.     }

  17. };


这里,函数shakeEventDidOccur()可以自定义,本例是将摇晃后的结果返回在页面上展示出来,请看DEMO演示。
http://bbs.qietu.com/html/yaoyiyao/


1
Report
|
1
Share
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
大家都在看
Log in