|
对DeviceMotionEvent进行优化,除无用的代码重新封装DeviceMotionEven,另外动画不执行完毕就不能继续执行DeviceMotionEvent事件,所以这点也要进行优化
首先对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); }
现在就完美了 |
|