JavaScript 摇一摇
1 function handleMotionEvent() { 2 const speed = 4500; 3 let count = 0; 4 let startTime = new Date().getTime(); 5 let startAcceleration = { 6 x: 0, 7 y: 0, 8 z: 0, 9 }; 10 11 const handle = function(DeviceMotionEvent) { 12 const endTime = new Date().getTime(); 13 const endAcceleration = DeviceMotionEvent.accelerationIncludingGravity; 14 const time = endTime - startTime; 15 16 if (time > 100) { 17 const distance = Math.sqrt( 18 Math.pow(endAcceleration.x - startAcceleration.x, 2) + 19 Math.pow(endAcceleration.y - startAcceleration.y, 2) + 20 Math.pow(endAcceleration.z - startAcceleration.z, 2) 21 ); 22 startTime = endTime; 23 // console.log('Speed: ', Math.round((distance / time) * 10000)); 24 if ((distance / time) * 10000 > speed) { 25 console.log('【Times】', count++); 26 } 27 startAcceleration = endAcceleration; 28 } 29 // window.removeEventListener('devicemotion', handle, false); 30 }; 31 32 return handle; 33 } 34 35 if (window.DeviceOrientationEvent) { 36 const handle = handleMotionEvent(); 37 window.addEventListener('devicemotion', handle, false); 38 }