/*完美运动框架*/
//1.先清除定时期,2,获取样式,如果是opacity则单独解决,3,定义速度,4,定义当前值是否到达目的地,5,判断当前值是否到达目的地,6运动基本,如果是opacity
function startMove(obj,json,fnEnd){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bStop = true; //假设所有的属性都达到目标值
for(attr in json){ //多值运动以json形式来表式
var cur = 0;
if(attr == "opacity"){ //透明度特殊处理
cur=Math.round(parseFloat(getStyle(obj, attr))*100);
}else{
cur = parseInt(getStyle(obj,attr));
}
var speed = (json[attr] - cur)/6; //定义速度
speed = speed > 0? Math.ceil(speed):Math.floor(speed); //缓冲运动取整
if(cur != json[attr]){ //如果各值没有达到目标值,则继续运动
bStop = false;
}
if(attr == "opacity"){ //透明度特殊处理
obj.style.filter='alpha(opacity:'+(cur+speed)+')';
obj.style.opacity=(cur+speed)/100;
}else{
obj.style[attr] = cur+speed + "px";
}
}
if(bStop){
clearInterval(obj.timer); //如果各值达到目标值,则停止定时器
if(fnEnd){ //回调函数,链式运动
fnEnd();
}
}
},Math.round(1000/60));
}