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 相关文章推荐
JS处理VBArray的函数使用说明
May 11 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
Apr 30 Javascript
jquery实现动态画圆
Dec 04 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
Mar 18 Javascript
10个很棒的jQuery代码片段
Sep 24 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
Aug 16 Javascript
JS动态生成年份和月份实例代码
Feb 04 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 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
制作美丽的拉花
2021/03/03 冲泡冲煮
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python读取文本中的坐标方法
2018/10/14 Python
Python并行分布式框架Celery详解
2018/10/15 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python自动化操作实现图例绘制
2020/07/09 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
师德个人剖析材料
2014/02/02 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript