//这段代码为什么计算到-3的时候停不下?
//是不是没有计算完成啊?
//我觉得是到了浮点数的时候就计算不完成了?
//我的想法是如果在计算49的时候ss小于1的时候就等于1.
//如果在计算-3的时候ss小于-1的时候就等于-1才对吧?
//这个公式是计算一个缓动效果的.就是距离目标会越来越快,
//或者大家谁有更好的公式分享一下?
var arr = [-3,49]; var i=0; var n=0; var ss=0; var timer; var t; function aa(target){ if(n == target){ console.log("stop"); clearTimeout(t); }else{ ss = (target - n) / 2.5; ss = ss < 1 ?Math.ceil(ss) : Math.floor(ss); n+=ss; console.log(n) t = setTimeout(function(){ aa(target); },40) } } timer = setInterval(function(){ i++; if(i == 2){ i=0; } aa(arr[i]); },1000);
你要实现的效果是离目标越近速度越快对不对?提供一段伪代码,你可以参考一下。其实你可以自己定义一个加速度,就像是物理学中的一样。
double speed=1;//初始速度
double s=1000;//距离
double s1=0;//每次行进距离
double s2=0;//已行进距离
for(s2=0;s2<=1000;)
{
s1=speed;
speed=1/((s-s1)/s);
s2+=s1;
}