首页 新闻 会员 周边

这样的缓动效果的公式算法怎么计算的 ?小弟一直很困惑.

0
悬赏园豆:5 [待解决问题]

//这段代码为什么计算到-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);
深蓝色梦想的主页 深蓝色梦想 | 初学一级 | 园豆:6
提问于:2012-12-19 01:32
< >
分享
所有回答(1)
0

你要实现的效果是离目标越近速度越快对不对?提供一段伪代码,你可以参考一下。其实你可以自己定义一个加速度,就像是物理学中的一样。

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;

}

allon6318 | 园豆:858 (小虾三级) | 2012-12-19 11:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册