h5手机摇一摇功能实现:基于html5重力感应DeviceMotionEvent事件监听手机摇晃

时间: 2018-01-18阅读: 3746标签: h5

DeviceMotionEvent事件:

DeviceMotionEven是html5提供的一个用来获取设备物理方向及运动的信息(比如陀螺仪、罗盘及加速计)的Dom事件,事件描述如下:

deviceorientation:提供设备的物理方向信息,表示为一系列本地坐标系的旋角。
devicemotion:提供设备的加速信息,表示为定义在设备上的坐标系中的卡尔迪坐标。其还提供了设备在坐标系中的自转速率。若可行的话,事件应该提供设备重心处的加速信息。
compassneedscalibration:用于通知Web站点使用罗盘信息校准上述事件。


原理:

开发者从各个内置传感器那里获取未经修改的传感数据,并观测或响应设备各种运动和角度变化。这些传感器包括陀螺仪、加速器和磁力仪(罗盘)。
加速器和陀螺仪的数据都是描述沿着iOS设备三个方向轴上的位置,对于一个竖屏摆放的iPhone来说,X方向从设备的左边(负)到右边(正),Y方向则是由设备的底部(-)到顶部(+),而Z方向为垂直于屏幕由设备的背面(-)到正面(+)。


DeviceMotionEvent 会在设备发生有意义的摆动(或运动)时产生.事件对象封装有产生的间距值,旋转率,和设备加速度,加速度的计算方式是重力和用户产生的两个加速度矢量之和.设备是通过 陀螺仪和加速计来区别这两者的,通过DeviceMotion对设备运动状态的判断,则可以帮助我们在网页上就实现“摇一摇”的交互效果。


利用devicemotion实现手机摇一摇

摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息。devicemotion事件对象中有一个accelerationIncludingGravity属性,该属性包括:一个包含x、y 和z 属性的对象,在考虑z轴自然重力加速度的情况下,告诉你在每个方向上的加速度。

<script type="text/javascript">  
    var currhandle=0;//判断操作是否完成
    if(window.DeviceMotionEvent){
        var speed = 15;  
        var x = y = z = lastX = lastY = lastZ = 0;  
        window.addEventListener('devicemotion', function(){  
            var acceleration =event.accelerationIncludingGravity;  
            x = acceleration.x;  
            y = acceleration.y;  
            z = acceleration.z;
            if(Math.abs(x-lastX) > speed || Math.abs(y-lastY) > speed || Math.abs(z-lastZ) > speed+10) {  
            	if(currhandle==0){
            		setbegin();//摇一摇事件触发后执行操作
            		currhandle=1;
            	}	
            }  
            lastX = x;  
            lastY = y;  
            lastZ = z;
        }, false);  
    }else{
    	console.log("您的设备不支持重力感应事件!")
    }
    function setbegin(){//开始操作
    	var color = new Array('#ff9', '#ff0', '#f00', '#000', '#00f', '#0ff');  
    	document.body.style.backgroundColor = color[Math.round(Math.random()*10)%6];
    	currhandle=0;
    }     
</script>




吐血推荐

1.站长广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入...

2.休闲娱乐: 网页游戏  直播/交友   H5游戏

链接: http://www.fly63.com/article/detial/366

h5开发在ios浏览器遇到的坑

click事件;在ios上,最后一个元素加margin-bottom无效;时间转化问题;position: fixed中的input框聚焦软键盘弹出,IOS下会有光标错位问题;滚动穿透问题

Android H5秒开方案调研—今日头条H5秒开方案详解

文件下载耗时:包括html、css、js、图片等;页面渲染耗时:页面渲染,解析js、css文件等;WebView创建耗时:首次创建WebView耗时大约需要500ms左右,第二次创建耗时大约需要20ms左右

H5唤醒App之scheme方案

在写移动端页面会遇到唤醒App的需求, 一般都是通过scheme协议唤起的,这里记录一下,以新浪微博为例: 其协议为 sinaweibo://splash; 这些协议需要自己去收集

H5活动页面2小时快速开发

这是一套我自己经常用的H5活动页面开发脚手架,针对目前一般的H5页面,基本上2小时就能完成相关的开发内容。俗话说:工欲善其事必先利其器,有了这么一套H5页面脚手架,我相信80%的H5页面,都能够在2小时当中开发完成。

H5页面中唤起APP的方法

需要在从APP分享出去的H5页面中,带有一个立即打开的按钮,如果本地安装了app,那么就直接唤起本地的app,如果没有安装,则跳转到下载。这是一个很正常的推广和导流量的策略。

H5与企业微信jssdk集成

注册企业微信,在应用与小程序栏目中,设置可信域名,配置公众号菜单。可信域名不得不说下,在最初开发时,认为设置并验证后,微信认证接口会实现跨域请求,其实并没有。所以全在H5端还得配合服务端完成票据获取等操作。

h5通过css实现禁止ios端长按复制选中文字的方法

在ios端默认的长按选择,可以对文字进行复制粘贴。但是在实际开发中,针对一些按钮一般要避免长按时弹出选中文字,或者一些罩层要避免弹出。 这篇文章通过css3实现禁止ios端长按复制选中文字的方法

如何在h5中调用支付宝支付功能

如何在自己的H5页面如何集成支付宝支付呢?目前采用前后端分离的开发模式,数据都是通过服务器那边获取的,现在需要集成支付宝支付,下面就简单介绍下。

h5实现名片扫描识功能

点击名片识别按钮,将名片上的个人信息扫描并解析出来显示。需要调出手机摄像头和相册,让用户进行选择;获取照片或者图片的base64数据;调取第三方的orc接口进行图片解析,得到名片上的个人信息,并显示。

h5通过连接打开本地app_以及常见应用的URL Scheme

在做h5活动页面的时候,有这样的一个需求:点击页面的一个按钮就打开本地的一个app应用,如果该应用未下载,则跳转到app的下载页。这个操作是通过连接跳转的形式来实现的,这篇文章就简单讲解下如何操作的?

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全