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 相关文章推荐
解决 FireFox 下[使用event很麻烦] 的问题.
Aug 22 Javascript
javascript 写类方式之一
Jul 05 Javascript
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
JavaScript instanceof 的使用方法示例介绍
Oct 23 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
JS控制一个DIV层在指定时间内消失的方法
Feb 17 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
基于JavaScript代码实现pc与手机之间的跳转
Dec 23 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
Jul 25 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
jQuery分组选择器简单用法示例
Apr 04 jQuery
layui radio点击事件实现input显示和隐藏的例子
Sep 02 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
Symfony核心类概述
2016/03/17 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
php7 新增功能实例总结
2020/05/25 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
javascript动画浅析
2012/08/30 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
python多线程使用方法实例详解
2019/12/30 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
银行实习鉴定
2013/12/13 职场文书
公司晚会策划方案
2014/05/17 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
地震捐款简报
2015/07/21 职场文书
远程教育学习心得体会
2016/01/23 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫