缓冲运动:
速度 = (目标值 -当前值)/系数;(系数:6、7、8)
速度 = 速度>0?Math.ceil(速度):Math.floor(速度);
function startMove(obj,json,endFn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bBtn = true;
for(var attr in json){
var iCur = 0;
if(attr == 'opacity'){
if(Math.round(parseFloat(getStyle(obj,attr))*100) == 0){
iCur = Math.round(parseFloat(getStyle(obj,attr)*100));
}
else{
iCur = Math.round(parseFloat(getStyle(obj,attr)*100)) || 100;
}
}else{
iCur = parseFloat(getStyle(obj,attr))||0;
}
var iSpeed = (json[attr] - iCur)/20;
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
if(iCur != json[attr]){
bBtn = false;
}
if(attr == 'opacity'){
obj.style.filter = 'alpha(opacity=' + (iCur + iSpeed) + ')';
obj.style.opacity = (iCur + iSpeed)/100;
}else{
obj.style[attr] = iCur + iSpeed + 'px';
}
}
if(bBtn){
clearInterval(obj.timer);
if(endFn){
endFn.call(obj);
}
}
},30);
}
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr];
}
}
弹性运动:
速度:
速度 += (目标值 -当前值)/系数;(系数:6、7、8)
速度 *= 系数;(系数:0.7,0.75,0.8)
条件:
if(速度的绝对值不大于1 且 距离目标的绝对值(Math.abs())不大于1){
清除定时器,速度和距离强行设置
}else{
当前值+速度+‘px’;
}