一、运动框架
1.在开始运动时,关闭已有定时器(否则会不断有新的定时器执行)
2.把运动和停止隔开(if/else)
二、缓冲运动
逐渐变慢,最后停止(距离越远速度越大)
速度=(目标值-当前值)/缩放系数
例如 var iSpeed=(iTarget-oDiv.offsetLeft)/8;
但由于除法可能产生小数,位置加上一个小数还是会被舍弃(如300.25px其实还是会被计算机当成300px),所以小数要给它向上取整,当然也有可能是负的小数,那就要向下取整
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
潜在问题:目标值有时候也是计算出来可能是小数,也要给它取整parseInt(iTarget)
三、匀速运动的停止条件
距离足够近
if(Math.abs(oDiv.offsetLeft-iTarget)<iSpeed){ //不管往左还是往右,取绝对值
oDiv.style.left=iTarget+'px';
}