全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS实现微信摇一摇原理解析

本文为大家分享了JS实现微信摇一摇的原理,供大家参考,具体内容如下

实现原理:

1.微信摇一摇事件需要有硬件支撑,必须要求手机中有陀螺仪
2.在JS中给window添加ondevectionmotion事件。该事件在手机晃动,即手机中的陀螺仪发生旋转,该事件会触发
3.触发ondevectionmotion事件,会产生一个事件对象,通过该对象中的键值(accelerationIncludingGravity)来获得该重力加速器对象
4.重力加速器对象中含有陀螺仪的坐标,通过重力加速器对象.x - .y - .z 获取陀螺仪当前的坐标

<!DOCTYPE html> 
<html> 
 <head> 
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> 
  <title>微信摇一摇</title> 
 </head> 
 <body> 
  <!--请摇一摇--> 
 </body> 
 <script type="text/javascript"> 
  function randomNum(m,n){ 
   return Math.floor(Math.random(n - m + 1) + m); 
  } 
  //cover设置背景尺寸 
  //将背景图按所在标签的宽高,缩放 
  document.body.style.backgroundSize = "cover"; 
  //设置body的背景图 
  document.body.style.backgroundImage = "url(img/bg.jpg)" ; 
  //事件设备:触发该事件需要硬件支持 
  //摇一摇功能: 
  //1.手机中的陀螺仪加速两次 加速器的差值当达到某个值时,则认为是手机晃动事件 
  //2.设置手机晃动事件前,获取加速器的值 
  //3.添加手机晃动事件;     
  //获取手机晃动前加速器的值,创建一个对象获取 
  var currentValue = { 
   x : 0, 
   y : 0, 
   z : 0 
  }; 
  //获取手机晃动之后加速器的值,创建一个对象获取 
  var lastValue = { 
   x : 0, 
   y : 0, 
   z : 0 
  } 
  //设置晃动的最小的距离,只有达到该距离时,才执行摇一摇事件 
  var minValue = 20; 
  //当手机触发摇一摇事件时,我们得到此时的位置信息,存储到一个p标签上 
  //理论上讲:陀螺仪事件中的加速器是无法静止的; 
  var p1 = document.createElement("p"); 
  //第一种方式: 
  var img1 = document.createElement("img"); 
  img1.style.width = "375px"; 
  img1.style.height = "560px"; 
  //手机晃动事件 
  window.ondevicemotion = function(e){ 
   //获取对象 
   var event1 = event || e; 
   //获取加速器对象,为了获取陀螺仪上的坐标信息 
   var acceleration = event1.accelerationIncludingGravity; 
   //记录当前加速器的值 
   currentValue.x = acceleration.x; 
   currentValue.y = acceleration.y; 
   currentValue.z = acceleration.z; 
   //判断微信摇一摇事件(手机是否晃动) 
   if (Math.abs(currentValue.x - lastValue.x) >= minValue || Math.abs(currentValue.y - lastValue.y) > minValue || Math.abs(currentValue.z - lastValue.z) > minValue) { 
    //说明摇一摇事件触发 
    //实现微信摇一摇,可以将摇一摇中的图片,作为body的背景图 
    //随机一张图片的下标(1 - 5) 
    var ranN = randomNum(1,6); 
    //创一个定时器 
    var timer = setInterval(function(){ 
     ranN ++ 
     if (ranN == 6) { 
      ranN = 1; 
     } 
     //为当前的body设置背景图 
     //document.body.style.backgroundImage = "url(img/"+ranN+".jpg)"; 
     //为当前img设置路径 
     img1.src = "img/"+ranN+".jpg"; 
      
    },200); 
    //设置一个延时器,延时一段时间后消除延时器 
    setTimeout(function(){ 
     clearInterval(timer); 
    },1000); 
   } 
   //记录最后的值(保存上一次晃动事件中的加速器的值) 
   lastValue.x = currentValue.x; 
   lastValue.y = currentValue.y; 
   lastValue.z = currentValue.z; 
  } 
  document.body.appendChild(img1); 
 </script> 
</html> 

注意:该代码中没有上传图片,如需要运行需要自己在代码的同级目录创建一个img文件夹,里面放上从1到6的后缀为.jpg的图片


# js  # 微信  # 摇一摇  # JavaScript+H5实现微信摇一摇功能  # 陀螺仪  # 延时器  # 创建一个  # 机中  # 中有  # 两次  # 事件中  # 大家分享  # 上讲  # 第一种  # 上传图片  # 放上  # 具体内容  # 键值  # 象中  # 中含有  # html  # head  # meta  # gt 


相关文章: 建站之星24小时客服电话如何获取?  如何用y主机助手快速搭建网站?  如何选择高效响应式自助建站源码系统?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  网站制作知乎推荐,想做自己的网站用什么工具比较好?  湖北网站制作公司有哪些,湖北清能集团官网?  在线教育网站制作平台,山西立德教育官网?  如何在Golang中使用replace替换模块_指定本地或远程路径  Android滚轮选择时间控件使用详解  威客平台建站流程解析:高效搭建教程与设计优化方案  建站VPS推荐:2025年高性能服务器配置指南  宝塔建站后网页无法访问如何解决?  如何通过智能用户系统一键生成高效建站方案?  如何登录建站主机?访问步骤全解析  建站主机是什么?如何选择适合的建站主机?  黑客如何通过漏洞一步步攻陷网站服务器?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  建站之星会员如何解锁更多建站功能?  如何获取免费开源的自助建站系统源码?  制作网站的软件免费下载,免费制作app哪个平台好?  IOS倒计时设置UIButton标题title的抖动问题  如何用免费手机建站系统零基础打造专业网站?  建站主机数据库如何配置才能提升网站性能?  创业网站制作流程,创业网站可靠吗?  如何配置WinSCP新建站点的密钥验证步骤?  如何通过免费商城建站系统源码自定义网站主题与功能?  制作网站的公司有哪些,做一个公司网站要多少钱?  制作网站的基本流程,设计网站的软件是什么?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  在线制作视频的网站有哪些,电脑如何制作视频短片?  再谈Python中的字符串与字符编码(推荐)  微信小程序制作网站有哪些,微信小程序需要做网站吗?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何彻底删除建站之星生成的Banner?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何通过虚拟主机快速完成网站搭建?  ,想在网上投简历,哪几个网站比较好?  宝塔新建站点报错如何解决?  公司门户网站制作流程,华为官网怎么做?  如何挑选高效建站主机与优质域名?  建站主机类型有哪些?如何正确选型  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何用低价快速搭建高质量网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  如何在服务器上三步完成建站并提升流量?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。