H5+JS實現手機搖一搖功能


在做微信活動頁面的時候,經常會需要實現手機搖一搖功能,比如“搖一搖,拿好禮”。

為了實現它,就需要用到HTML5的DeviceOrientation特性。它提供的DeviceMotion事件封裝了設備的運動傳感器時間,通過改時間可以獲取設備的運動狀態、加速度等數據(另還有deviceOrientation事件提供了設備角度、朝向等信息)。

而通過DeviceMotion對設備運動狀態的判斷,則可以幫助我們在網頁上就實現“搖一搖”的交互效果。

現在把完整代碼記錄下:

 1 //運動事件監聽
 2 if (window.DeviceMotionEvent) {
 3     window.addEventListener('devicemotion',deviceMotionHandler,false);
 4 }
 5 
 6 //獲取加速度信息
 7 //通過監聽上一步獲取到的x, y, z 值在一定時間范圍內的變化率,進行設備是否有進行晃動的判斷。
 8 //而為了防止正常移動的誤判,需要給該變化率設置一個合適的臨界值。
 9 var SHAKE_THRESHOLD = 4000;
10 var last_update = 0;
11 var x, y, z, last_x = 0, last_y = 0, last_z = 0;
12 function deviceMotionHandler(eventData) {
13         var acceleration =eventData.accelerationIncludingGravity;
14         var curTime = new Date().getTime();
15         if ((curTime-last_update)> 10) {
16             var diffTime = curTime -last_update;
17             last_update = curTime;
18             x = acceleration.x;
19             y = acceleration.y;
20             z = acceleration.z;
21             var speed = Math.abs(x +y + z - last_x - last_y - last_z) / diffTime * 10000;
22             if (speed > SHAKE_THRESHOLD) {
23                 alert("你中獎啦!");  // Do something
24             }
25             last_x = x;
26             last_y = y;
27             last_z = z;
28         }
29 }

 這樣搖一搖代碼就已經實現啦~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM