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

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

ID:30504881

大?。?6.69 KB

頁(yè)數(shù):5頁(yè)

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

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

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

1、我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識(shí)是在這次中級(jí)黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(jìn)一步的了解Javascript動(dòng)畫的實(shí)現(xiàn)原理淺析  這篇文章主要介紹了Javascript動(dòng)畫的實(shí)現(xiàn)原理淺析,本文用兩個(gè)實(shí)例來(lái)解釋Javascript動(dòng)畫的實(shí)現(xiàn)原理,需要的朋友可以參考下  假設(shè)有這樣一個(gè)動(dòng)畫功能需求:把一個(gè)div的寬度從100px變化到200px。寫出來(lái)的代碼可能是這樣的:  代碼如下:    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);對(duì)黨的認(rèn)識(shí)也有了進(jìn)一步的提高。才真正體會(huì)到了中國(guó)共產(chǎn)黨的偉大、光榮和正確,更感到只有中國(guó)共產(chǎn)黨是全中國(guó)最廣大人民利益的忠實(shí)代表我真正系統(tǒng)地接觸和學(xué)習(xí)黨的基本知識(shí)是在這次中級(jí)黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(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í)行間隔?! ∮袥](méi)有更好的做法呢?下面先來(lái)看一道小學(xué)數(shù)學(xué)題:  代碼如下:  A樓和B樓相距100米,一個(gè)人勻速?gòu)腁樓走到B樓,走了5分鐘到達(dá)目的地,問(wèn)第3分鐘時(shí)他距離A樓多遠(yuǎn)?  勻速運(yùn)動(dòng)中計(jì)算某個(gè)時(shí)刻路程的計(jì)算公式為:路程*當(dāng)前時(shí)間/時(shí)間。所以答案應(yīng)為100*3/5=60?! ∵@道題帶來(lái)的啟發(fā)是,某個(gè)時(shí)刻的路程是可以通過(guò)特定公式計(jì)算出來(lái)的。同理,動(dòng)畫過(guò)程中某個(gè)時(shí)刻的值也可以通過(guò)公式計(jì)算出來(lái),而不是累加得出:  代碼如下:    fun

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

6、黨校的培訓(xùn)班上。通過(guò)學(xué)習(xí),了解了黨的發(fā)展歷程,對(duì)黨的性質(zhì)、宗旨、任務(wù)等基本知識(shí)有了進(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的誤差。但是問(wèn)題還沒(méi)完全解決,在瀏覽器開發(fā)工具中檢查test2元素可以發(fā)現(xiàn),test2的最終寬度可能不止200px。仔細(xì)檢查animate2函數(shù)的代碼可以發(fā)現(xiàn):  1.percentage的值可能大于1,可以通過(guò)Math.min限制最大值解決。  2.即使保證了percentage的值不大于1,只要endValue或startValue為小數(shù),(endValue-startValue)*percentage的值也可能產(chǎn)生誤差,因?yàn)镴avascript小數(shù)

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

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

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

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