如何忽略JS中event.acceleration的减速?

时间:2014-06-25 22:20:27

标签: javascript html5 mobile accelerometer devicemotion

我试图在手机首次开始移动时发生事件。这触发就好了。但是,我遇到了一个问题:减速度的测量与加速度相似。当我停止移动设备时,我看到另一个尖峰。关于如何忽略第二次加标的任何建议?

以下代码给了我" huzzah!"当我第一次移动手机时,我停止移动它。我只想在第一个动作上触发。我得到了相关的函数和这里定义的大多数变量。不是脚本的完整范围,而是该功能的所有部分。

var elmt = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
var acceleration = eventData.acceleration;
var speed = 0;
speed = round(acceleration.y);
elmt.splice(0,1);
elmt.push(speed);
speedSmoothed=elmt.average();
                                          //Rounding function
function round(val) {
  var amt = 10;
  return Math.round(val * amt) /  amt;
}
                                        //Averaging function for the array
Array.prototype.average=function(){
var sum=0;
var j=0;
for(var i=0;i<this.length;i++){
    if(isFinite(this[i])){
      sum=sum+parseFloat(this[i]);
       j++;
      }
    }
if(j===0){
    return 0;
  }else{
      return sum/j;
   }
  }
                                            //trigger
if (speedSmoothed>1.5){
    console.log("Huzzah!");
   }

1 个答案:

答案 0 :(得分:0)

后来想了几个小时,我有点狡猾。足够可靠地表现得像我想要的那样。

if (speedSmoothed>1.5 && elmt[0]>elmt[4]){
 console.log("Huzzah!");
 }