課程
/前端開發(fā)
/JavaScript
/JS動畫效果
按照這個方式寫下來,同時(shí)運(yùn)動是實(shí)現(xiàn)了,可是鏈?zhǔn)竭\(yùn)動做不了哇。。求解!難道要用兩套不一樣的嗎?
2015-03-19
源自:JS動畫效果 6-2
正在回答
function?startMove(obj,json,fnEnd){ clearInterval(obj.timer); obj.timer?=?setInterval(function(){ doMove(obj,json,fnEnd); },30); } function?doMove(obj,json,fnEnd){ var?iCur?=?0; var?attr?=?null; var?bStop?=?true; for(attr?in?json){ if(attr=='opacity'){ //if(parseInt(100*getStyle(obj,attr))==0){ //iCur?=?parseInt(100*getStyle(obj,attr)); //} iCur=Math.round(parseFloat(getStyle(obj,attr))*100); //else{ //iCur?=?parseInt(100*getStyle(obj,attr))?||?100; ?????//} } else{ iCur?=?parseInt(getStyle(obj,attr))?||?0; } var?iSpeed?=?(json[attr]?-?iCur)/5; iSpeed?=?(iSpeed>0)???Math.ceil(iSpeed)?:?Math.floor(iSpeed); if(json[attr]!=iCur){ bStop?=?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(bStop){ clearInterval(obj.timer); if(fnEnd){ fnEnd.call(obj); } } } function?stopMove(obj){ clearInterval(obj.timer); } function?getStyle(obj,attr){ if(obj.currentStyle){ return?obj.currentStyle[attr]; } else{ return?getComputedStyle(obj)[attr]; } }
林青石
你把startMove(oDiv,{width:301,top:100,opacity:100}中的width變大一點(diǎn),比如400,就可以了。感覺是width變化時(shí)間太短導(dǎo)致的
不對應(yīng)該這么寫 就沒事了
if (icon==json[attr]) ? ??? ??? ?{? ??? ??? ??? ?flag=true;? ??? ??? ?}else{? ??? ??? ??? ?flag=false;? ??? ??? ?}
MIS_Lu
我本以為我解決了問題? 不過又出來一堆問題? 大家多交流解決吧
是這老師不夠嚴(yán)謹(jǐn) 還是怎么? 他是不是漏了點(diǎn)代碼
if (icon!=json[attr]) ? ??? ??? ?{? ??? ??? ??? ?flag=false;? ??? ??? ?}else{? ??? ??? ??? ?flag=true;? ??? ??? ?}
else語句沒寫導(dǎo)致flag無法獲得true值? 以致整個if(flag)都沒執(zhí)行,你們的鏈?zhǔn)竭\(yùn)動GG了
我也是這樣的,怎么回事?代碼如下:
<!DOCTYPE?html> <html> <head> <meta?charset="UTF-8"> <title>運(yùn)動框架最終版</title> <script?type="text/javascript"?src="move.js"></script> <style?type="text/css"> *{margin:0;padding:0;} div{margin:0?auto;width:300px;height:200px;border:4px?solid?#FF0;background:#000;filter:alpha(opacity:30);opacity:0.3;position:relative;top:0;} </style> <script?type="text/javascript"> window.onload=function?()?{ var?oDiv=document.getElementById("box"); oDiv.onmouseover=function?()?{ startMove(oDiv,{width:301,top:100,opacity:100},function?()?{ alert(1) }); } oDiv.onmouseout=function?()?{ startMove(oDiv,{width:300,top:0,opacity:30}); } } //獲取樣式 function?getStyle?(obj,attr)?{ ??if?(obj.currentStyle)?{ ????return?obj.currentStyle.attr; ??}?else{ ????return?getComputedStyle(obj,false)[attr]; ??}; } //運(yùn)動函數(shù) function?startMove?(obj,json,fn)?{ ??var?flag=true;?????????????//假設(shè)所有運(yùn)動都達(dá)到了目標(biāo)值 ??clearInterval(obj.timer); ??obj.timer=setInterval(function(){ ??//遍歷json中的值 ????for(var?attr?in?json){ ??//計(jì)算速度 ??var?iCur=parseInt(getStyle(obj,attr))? ????if?(attr=="opacity")?{ ?????iCur=Math.round(parseFloat(getStyle(obj,attr))*100); ????}? ??????speed=(json[attr]-iCur)/20; ??????speed=speed<0?Math.floor(speed):Math.ceil(speed) ??//判斷所有屬性是否達(dá)到目標(biāo)值 ??????if(iCur!=json[attr]){ ?????????flag=false; ??????}????????? ??//判斷屬性是否為透明度? ??????if?(attr=="opacity"){? ??????obj.style.filter='alpha(opacity:'+(iCur+speed)+')'; ??????obj.style.opacity=(iCur+speed)/100; ??????}?else{ ????????obj.style[attr]=iCur+speed+"px"; ??????}; ??//判斷所有屬性是否達(dá)到目標(biāo)值 ??????if?(flag)?{ ????????clearInterval(obj.timer); ??//判斷是否有需要執(zhí)行的下一個函數(shù) ????????if?(fn)?{ ??????????fn(); ????????}? ????} ??} ??},30) } </script> </head> <body> <div?id="box"></div> </body> </html>
如果傳入的是this關(guān)鍵字 就要注意this在這里指向誰
代碼貼出來,不可能實(shí)現(xiàn)不了。。??赡苁菍戝e了把
舉報(bào)
通過本課程JS動畫的學(xué)習(xí),從簡單動畫開始,逐步深入各種動畫框架封裝
1 回答用運(yùn)動框架應(yīng)用鏈?zhǔn)竭\(yùn)動出現(xiàn)的錯誤
2 回答老師的完美運(yùn)動框架有bug
3 回答運(yùn)動框架實(shí)現(xiàn)思路
1 回答完美的運(yùn)動框架中for循環(huán)實(shí)現(xiàn)多個運(yùn)動同時(shí)進(jìn)行變化的原理是啥了?
6 回答鏈?zhǔn)竭\(yùn)動不能嗎
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-08-26
2015-07-22
你把startMove(oDiv,{width:301,top:100,opacity:100}中的width變大一點(diǎn),比如400,就可以了。感覺是width變化時(shí)間太短導(dǎo)致的
2015-07-11
不對應(yīng)該這么寫 就沒事了
if (icon==json[attr])
? ??? ??? ?{
? ??? ??? ??? ?flag=true;
? ??? ??? ?}else{
? ??? ??? ??? ?flag=false;
? ??? ??? ?}
2015-07-11
我本以為我解決了問題? 不過又出來一堆問題? 大家多交流解決吧
2015-07-11
是這老師不夠嚴(yán)謹(jǐn) 還是怎么? 他是不是漏了點(diǎn)代碼
if (icon!=json[attr])
? ??? ??? ?{
? ??? ??? ??? ?flag=false;
? ??? ??? ?}else{
? ??? ??? ??? ?flag=true;
? ??? ??? ?}
else語句沒寫導(dǎo)致flag無法獲得true值? 以致整個if(flag)都沒執(zhí)行,你們的鏈?zhǔn)竭\(yùn)動GG了
2015-06-17
我也是這樣的,怎么回事?代碼如下:
2015-04-11
如果傳入的是this關(guān)鍵字 就要注意this在這里指向誰
2015-04-11
代碼貼出來,不可能實(shí)現(xiàn)不了。。??赡苁菍戝e了把