我试图有一个事件发生时,手机第一次开始移动。这触发得很好。然而,我遇到了一个问题:减速的测量与加速度相似。当我停止移动装置时,我看到另一个尖峰。有什么建议可以忽略第二个尖峰吗?
下面的代码在我第一次移动手机和停止移动手机时给我"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!");
}
经过几个小时的思考,我变得有点狡猾了。足够可靠地按照我想要的方式运行。
if (speedSmoothed>1.5 && elmt[0]>elmt[4]){
console.log("Huzzah!");
}