前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >H5实现手机摇一摇

H5实现手机摇一摇

原创
作者头像
雪糕的晴天
修改2021-03-22 22:59:39
2.1K1
修改2021-03-22 22:59:39
举报
文章被收录于专栏:前端开发中的事

首先:最重要的是 该设备需要支持H5的新特性DeviceMotionDeviceMotionEvent

devicemotion h5提供的dom事件,提高设备的加速度的信息,其中包含 x,y,z 三个坐标方向的加速度

DeviceMotionEvent 返回设备的有关加速度和旋转的信息

代码语言:txt
复制
//运动事件监听
if (window.DeviceMotionEvent) {
    // 没有支持的可以报错
    window.addEventListener('devicemotion',deviceMotionHandler,false);
}

//获取加速度信息
//通过监听X,Y,Z的变化率来判断是否大于摇晃的限制,从而响应动作。
//而为了防止误判,需要给该变化率设置一个合适的临界值。
//可以设置单方向的加速度的限制
var SHAKE_THRESHOLD = 4000;
var last_update = 0;
var x, y, z, lastX = 0, lastY = 0, lastZ = 0;
function deviceMotionHandler(eventData) {
        var acceleration =eventData.accelerationIncludingGravity;
        var curTime = new Date().getTime();
        if ((curTime-last_update)> 10) {
            var diffTime = curTime - last_update;
            last_update = curTime;
            x = acceleration.x;
            y = acceleration.y;
            z = acceleration.z;
            var speed = Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime * 10000;
            if (speed > SHAKE_THRESHOLD) {
                // Do something
            }
            lastX = x;
            lastY = y;
            lastZ = z;
        }
}

代码实测 在安卓的微信网页内打开

未摇手机前:

image.png
image.png

摇手机后:

image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档