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 相关文章推荐
JavaScript脚本性能优化注意事项
Nov 18 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
Feb 25 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
Node.js模块加载详解
Aug 16 Javascript
JQuery跳出each循环的方法
Apr 16 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
JS自定义混合Mixin函数示例
Nov 26 Javascript
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
Vue路由切换页面不更新问题解决方案
Jul 10 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php设计模式 Facade(外观模式)
2011/06/26 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
Mac 上切换Python多版本
2017/06/17 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
详解flask表单提交的两种方式
2018/07/21 Python
pycharm创建一个python包方法图解
2019/04/10 Python
python程序输出无内容的解决方式
2020/04/09 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
什么是聚集索引和非聚集索引
2012/01/17 面试题
周年庆典邀请函范文
2014/01/24 职场文书
党员活动日总结
2014/05/05 职场文书
社区综治工作汇报
2014/10/27 职场文书
会议主持词开场白
2015/05/28 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS