javascript動(dòng)畫的實(shí)現(xiàn)原理淺析

javascript動(dòng)畫的實(shí)現(xiàn)原理淺析

ID:30504881

大?。?6.69 KB

頁數(shù):5頁

時(shí)間:2018-12-30

javascript動(dòng)畫的實(shí)現(xiàn)原理淺析_第1頁
javascript動(dòng)畫的實(shí)現(xiàn)原理淺析_第2頁
javascript動(dòng)畫的實(shí)現(xiàn)原理淺析_第3頁
javascript動(dòng)畫的實(shí)現(xiàn)原理淺析_第4頁
javascript動(dòng)畫的實(shí)現(xiàn)原理淺析_第5頁
資源描述:

《javascript動(dòng)畫的實(shí)現(xiàn)原理淺析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識是在這次中級黨校的培訓(xùn)班上。通過學(xué)習(xí),了解了黨的發(fā)展歷程,對黨的性質(zhì)、宗旨、任務(wù)等基本知識有了進(jìn)一步的了解Javascript動(dòng)畫的實(shí)現(xiàn)原理淺析  這篇文章主要介紹了Javascript動(dòng)畫的實(shí)現(xiàn)原理淺析,本文用兩個(gè)實(shí)例來解釋Javascript動(dòng)畫的實(shí)現(xiàn)原理,需要的朋友可以參考下  假設(shè)有這樣一個(gè)動(dòng)畫功能需求:把一個(gè)div的寬度從100px變化到200px。寫出來的代碼可能是這樣的:  代碼如下:    functionanimate1(element,endValue,duration){  varstart

2、Time=newDate(),  startValue=parseInt(element.style.width),  step=1;  vartimerId=setInterval(function(){  varnextValue=parseInt(element.style.width)+step;  element.style.width=nextValue+'px';  if(nextValue>=endValue){  clearInterval(timerId);  //顯示動(dòng)畫耗時(shí)  element.innerHTML=newDa

3、te-startTime;  }  },duration/(endValue-startValue)*step);對黨的認(rèn)識也有了進(jìn)一步的提高。才真正體會(huì)到了中國共產(chǎn)黨的偉大、光榮和正確,更感到只有中國共產(chǎn)黨是全中國最廣大人民利益的忠實(shí)代表我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識是在這次中級黨校的培訓(xùn)班上。通過學(xué)習(xí),了解了黨的發(fā)展歷程,對黨的性質(zhì)、宗旨、任務(wù)等基本知識有了進(jìn)一步的了解  }  animate1(document.getElementById('test1'),200,1000);  原理是每隔一定時(shí)間增加1px,一直到200px為止。然

4、而,動(dòng)畫結(jié)束后顯示的耗時(shí)卻不止1s(一般是1.5s左右)。究其原因,是因?yàn)閟etInterval并不能嚴(yán)格保證執(zhí)行間隔?! ∮袥]有更好的做法呢?下面先來看一道小學(xué)數(shù)學(xué)題:  代碼如下:  A樓和B樓相距100米,一個(gè)人勻速從A樓走到B樓,走了5分鐘到達(dá)目的地,問第3分鐘時(shí)他距離A樓多遠(yuǎn)?  勻速運(yùn)動(dòng)中計(jì)算某個(gè)時(shí)刻路程的計(jì)算公式為:路程*當(dāng)前時(shí)間/時(shí)間。所以答案應(yīng)為100*3/5=60。  這道題帶來的啟發(fā)是,某個(gè)時(shí)刻的路程是可以通過特定公式計(jì)算出來的。同理,動(dòng)畫過程中某個(gè)時(shí)刻的值也可以通過公式計(jì)算出來,而不是累加得出:  代碼如下:    fun

5、ctionanimate2(element,endValue,duration){  varstartTime=newDate(),  startValue=parseInt(element.style.width);  vartimerId=setInterval(function(){  varpercentage=(newDate-startTime)/duration;對黨的認(rèn)識也有了進(jìn)一步的提高。才真正體會(huì)到了中國共產(chǎn)黨的偉大、光榮和正確,更感到只有中國共產(chǎn)黨是全中國最廣大人民利益的忠實(shí)代表我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識是在這次中級

6、黨校的培訓(xùn)班上。通過學(xué)習(xí),了解了黨的發(fā)展歷程,對黨的性質(zhì)、宗旨、任務(wù)等基本知識有了進(jìn)一步的了解  varstepValue=startValue+(endValue-startValue)*percentage;  element.style.width=stepValue+'px';  if(percentage>=1){  clearInterval(timerId);  element.innerHTML=newDate-startTime;  }  },13);  }  animate2(document.getElementById('

7、test2'),200,1000);  這樣改良之后,可以看到動(dòng)畫執(zhí)行耗時(shí)最多只會(huì)有10幾ms的誤差。但是問題還沒完全解決,在瀏覽器開發(fā)工具中檢查test2元素可以發(fā)現(xiàn),test2的最終寬度可能不止200px。仔細(xì)檢查animate2函數(shù)的代碼可以發(fā)現(xiàn):  1.percentage的值可能大于1,可以通過Math.min限制最大值解決?! ?.即使保證了percentage的值不大于1,只要endValue或startValue為小數(shù),(endValue-startValue)*percentage的值也可能產(chǎn)生誤差,因?yàn)镴avascript小數(shù)

8、運(yùn)算的精度不夠。其實(shí)我們要保證的只是最終值的準(zhǔn)確性,所以在percentage為1的時(shí)候,直接使用endValue即可。對黨的認(rèn)識也有了

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。