国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JS實現微信搖一搖原理解析

2024-05-06 16:38:33
字體:
來源:轉載
供稿:網友

本文為大家分享了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的圖片


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 门头沟区| 襄垣县| 五河县| 绵竹市| 万载县| 利辛县| 泸州市| 远安县| 阜阳市| 江阴市| 都匀市| 古浪县| 穆棱市| 柘荣县| 芦山县| 横山县| 福清市| 伊金霍洛旗| 成都市| 宜都市| 南汇区| 忻城县| 抚远县| 灌阳县| 松桃| 富裕县| 青岛市| 台江县| 阿图什市| 泽州县| 富川| 沁水县| 儋州市| 蒙阴县| 耿马| 宿松县| 潮州市| 玉田县| 汶川县| 稻城县| 乐都县|