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 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 Javascript
jQuery中removeData()方法用法实例
Dec 27 Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
详解React中的组件通信问题
Jul 31 Javascript
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
vue 实现特定条件下绑定事件
Nov 09 Javascript
JavaScript switch语句使用方法简介
Dec 30 Javascript
JavaScript实现矩形块大小任意缩放
Aug 25 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
JavaScript 的继承
2011/10/01 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
市场营销专业推荐信
2013/11/03 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
行政副总岗位职责
2014/02/23 职场文书
教师远程培训感言
2014/03/06 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
三好学生事迹材料
2014/12/24 职场文书
世界地球日活动总结
2015/02/09 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
给学校的建议书400字
2015/09/14 职场文书
《称赞》教学反思
2016/02/17 职场文书