HTML5使用DeviceOrientation实现摇一摇功能


Posted in Javascript onJune 05, 2015

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

DeviceOrientation包括两个事件:

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

HTML

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

<div id="hand" class="hand hand-animate"></div> 
<div id="result"></div>

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

Javascript

“摇一摇”这个动作即“一定时间内设备了一定距离”,因此通过devicemotion监听设备晃动获取到的x, y, z轴的 值在一定时间范围内的变化率,即判断设备是否有进行晃动。而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。
HTML5判断设备晃动的代码我们使用已经封装好的shake.js,项目地址:https://github.com/alexgibson/shake.js。

<script src="shake.js"></script>

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

window.onload = function() { 
  var myShakeEvent = new Shake({ 
    threshold: 15 
  }); 
 
  myShakeEvent.start(); 
 
  window.addEventListener('shake', shakeEventDidOccur, false); 
 
  function shakeEventDidOccur () { 
    var result = document.getElementById("result"); 
    result.className = "result"; 
    var arr = ['妹子一枚','福利图片一套','码农笔记一本','土豪金一台']; 
    var num = Math.floor(Math.random()*4); 
    result.innerHTML = "恭喜,摇得"+arr[num]+"!"; 
    setTimeout(function(){ 
      result.className = "result result-show"; 
    }, 1000); 
  } 
};

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

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jQuery get和post 方法传值注意事项
Nov 03 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
javascript中CheckBox全选终极方案
May 20 Javascript
JS访问SWF的函数用法实例
Jul 01 Javascript
JS原型、原型链深入理解
Feb 27 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
jQuery 遍历map()方法详解
Nov 04 Javascript
jQuery实现复选框的全选和反选
Feb 02 Javascript
基于Bootstrap table组件实现多层表头的实例代码
Sep 07 Javascript
Vuex实现计数器以及列表展示效果
Mar 10 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 #Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 #Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 #Javascript
在JavaScript中使用NaN值的方法
Jun 05 #Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 #Javascript
jQuery实现弹出窗口中切换登录与注册表单
Jun 05 #Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
Jun 05 #Javascript
You might like
PHP PDO函数库详解
2010/04/27 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
js实现导航跟随效果
2018/11/17 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
jQuery实现获取多选框的值示例
2020/02/07 jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
如何运行Python程序的方法
2013/04/21 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
办公室人员先进事迹
2014/01/27 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
优秀高中学生评语
2014/12/30 职场文书
详解Python requests模块
2021/06/21 Python