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 DOM 学习第五章 表单简介
Feb 19 Javascript
javascript 全等号运算符使用说明
May 31 Javascript
Tips 带三角可关闭的文字提示
Oct 06 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
May 17 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
JS实现从连接中获取youtube的key实例
Jul 02 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
基于angularJS的表单验证指令介绍
Oct 21 Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 Javascript
详解使用 Node.js 开发简单的脚手架工具
Jun 08 Javascript
Vue一个案例引发的递归组件的使用详解
Nov 15 Javascript
Vue中对iframe实现keep alive无刷新的方法
Jul 23 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实现采集中国天气网未来7天天气
2014/10/15 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
angularjs基础教程
2014/12/25 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
python中xrange和range的区别
2014/05/13 Python
谈谈python中GUI的选择
2018/03/01 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
PHP面试题及答案二
2015/05/23 面试题
异常和异常类的概念
2014/09/12 面试题
工艺工程师工作职责
2013/11/23 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
父母寄语大全
2014/04/12 职场文书
医院合作意向书范本
2015/05/08 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫