首先對DeviceMotionEvent進行最佳化;
去除無用的代碼,重新封裝DeviceMotionEven
if(window.DeviceMotionEvent) {var speed = 25;//定義一個數值var x = y = z = lastX = lastY = lastZ = 0;//重設所有數值window.addEventListener('devicemotion', function(){var acceleration =event.accelerationIncludingGravity;//將感測值賦給acceleration x = acceleration.x;y = acceleration.y;z = acceleration.z;if(Math.abs(x-lastX) > speed || Math.abs(y-lastY) > speed ) {// TODO:在此處可以實現搖一搖之後所要進行的資料邏輯操作 donghua();}lastX = x;lastY = y;lastZ = z;}, false);}
由於實際項目中有很多需求無法很好的實現,
比如:動畫不執行完畢就不能繼續執行DeviceMotionEvent事件;
所以做了進一步最佳化;
var f=1;function donghua(){//動畫事件$(".img").animate({left:'0',opacity:'1'},700,function(){f=1;});});if(window.DeviceMotionEvent) {var speed = 25;//定義一個數值var x = y = z = lastX = lastY = lastZ = 0;//重設所有數值window.addEventListener('devicemotion', function(){var acceleration =event.accelerationIncludingGravity;//將感測值賦給acceleration x = acceleration.x;y = acceleration.y;z = acceleration.z;if(Math.abs(x-lastX) > speed || Math.abs(y-lastY) > speed ) {// TODO:在此處可以實現搖一搖之後所要進行的資料邏輯操作 if(f==1){ donghua(); f=0;}}lastX = x;lastY = y;lastZ = z;}, false);}
現在就完美了