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中的Document文档对象
Jan 16 Javascript
基于jquery的划词搜索实现(备忘)
Sep 14 Javascript
js Dialog 实践分享
Oct 22 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
js+html5实现侧滑页面效果
Jul 15 Javascript
浅谈如何使用webpack构建多页面应用
May 30 Javascript
打通前后端构建一个Vue+Express的开发环境
Jul 17 Javascript
详解小程序循环require之坑
Mar 08 Javascript
小程序实现上传视频功能
Aug 18 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
Sep 22 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
图书管理程序(二)
2006/10/09 PHP
支持oicq头像的留言簿(二)
2006/10/09 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
php中的strpos使用示例
2014/02/27 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python通过post提交数据的方法
2015/05/06 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python实现内存监控系统
2021/03/07 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python3中列表list合并的四种方法
2019/04/19 Python
python mysql中in参数化说明
2020/06/05 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
公司庆典邀请函范文
2014/01/13 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
捐资助学倡议书
2014/04/15 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server