看了這個(gè)最后那個(gè)完美的運(yùn)動(dòng)框架發(fā)現(xiàn)一個(gè)問題,同時(shí)運(yùn)動(dòng)的定時(shí)器并沒有結(jié)束。。。。。定時(shí)器還在一直運(yùn)行,只不過不在動(dòng)畫了而已。

后街
2014-09-03
1 回答
舉報(bào)
0/150
提交
取消
2014-09-03
//獲取當(dāng)前樣式
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
return getComputedStyle(obj,false)[attr];
}
//運(yùn)動(dòng)框架
/**
* @param obj
* @param json
* @param fn
*/
function startMove(obj,json,fn){
clearInterval(obj.timer);
var size = (function(){
var tt = 0;
for(var i in json){
tt++;
}
return tt;
}());
obj.timer = setInterval(function(){
var count = 0;//判斷同時(shí)運(yùn)動(dòng)是否結(jié)束
for(var i in json){
//判斷透明度
var icur = 0; //獲取當(dāng)前樣式
if(i=="opacity"){
icur = Math.round(parseFloat(getStyle(obj,i))*100);
}else{
icur = parseInt(getStyle(obj,i));
}
var iTarget = json[i];
//緩沖運(yùn)動(dòng)獲取speed (+ 越來越慢 -越來越慢)
var ispeed = iTarget-icur>0?Math.ceil((iTarget-icur)/8):Math.floor((iTarget-icur)/8);
//停止運(yùn)動(dòng)
if(icur != iTarget){
if(i=="opacity"){//透明度
obj.style.filter="alpha(opcoty:'"+(icur+ispeed)+")";
obj.style.opacity=(icur+ispeed)/100;
}else{
obj.style[i] = icur+ispeed+"px";
}
}else{
count++;
//判斷所有運(yùn)動(dòng)是否結(jié)束
if(count==size){
clearInterval(obj.timer);
if(fn){
fn();
}
}
}
}
},30);
}