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 相关文章推荐
使用隐藏的new来创建对象
Mar 29 Javascript
关于JQuery($.load)事件的用法和分析
Apr 09 Javascript
jquery 实现上下滚动效果示例代码
Aug 09 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
多种js图片预加载实现方式分享
Feb 19 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
May 27 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
Aug 18 Javascript
Vue加载json文件的方法简单示例
Jan 28 Javascript
Vue动画事件详解及过渡动画实例
Feb 09 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
May 09 Javascript
javascript中的this作用域详解
Jul 15 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删除数组中的特定元素的代码
2012/06/28 PHP
深入PHP变量存储的详解
2013/06/13 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
深入了解python中元类的相关知识
2019/08/29 Python
通过python3实现投票功能代码实例
2019/09/26 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
如何开启linux的ssh服务
2015/02/14 面试题
建筑工程毕业生自我鉴定
2014/01/14 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
优秀党员先进材料
2014/12/18 职场文书
作文批改评语
2014/12/25 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js