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中的数学函数集合
May 08 Javascript
jquery ajax abort()的使用方法
Oct 28 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
jQuery实现的原图对比窗帘效果
Jun 15 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
js弹出对话框方式小结
Nov 17 Javascript
原生JS实现导航下拉菜单效果
Nov 25 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
bootstrap table实现合并单元格效果
Dec 24 Javascript
详解React中合并单元格的正确写法
Jan 08 Javascript
vuecli项目构建SSR服务端渲染的实现
Oct 30 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
Oct 31 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 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
深入解析Python中的urllib2模块
2015/11/13 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
SQL Server数据库笔试题和答案
2016/02/04 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
企业申诉管理制度
2014/01/30 职场文书
指导教师评语
2014/04/26 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python