久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

HTML5游戲開發(fā) 之 循環(huán)的控制(3)

7) 改進(jìn)性能 RequestAnimationFrame確實是實現(xiàn)動畫不可或缺的利器,但是不可以過度的使用。尤其是和一些漸變性的事件相關(guān)聯(lián)的動畫,比如,Chrome Web Store首頁利用垂直滾軸不斷顯示頁面內(nèi)容
       7) 改進(jìn)性能

       RequestAnimationFrame確實是實現(xiàn)動畫不可或缺的利器,但是不可以過度的使用。尤其是和一些漸變性的事件相關(guān)聯(lián)的動畫,比如,Chrome Web Store首頁利用垂直滾軸不斷顯示頁面內(nèi)容。下面給出一個不太好的例子:

  1. function onScroll() {
  2. update();
  3. }
復(fù)制代碼
  1. function update() {

  2. // assume domElements has been declared
  3. // by this point :)
  4. for(var i = 0; i < domElements.length; i++) {

  5. // read offset of DOM elements
  6. // to determine visibility - a reflow

  7. // then apply some CSS classes
  8. // to the visible items - a repaint

  9. }
  10. }
復(fù)制代碼
  1. window.addEventListener(‘scroll’, onScroll, false);
復(fù)制代碼

       上面這個例子,每次scroll事件的時候,都調(diào)用RequestAnimationFrame,雖然瀏覽器會量力而行的執(zhí)行動畫渲染,但是有兩個沖突的地方,成為了動畫渲染的性能瓶頸。首先,scroll事件調(diào)用的頻率,遠(yuǎn)遠(yuǎn)大約每秒60幀。也就是說,瀏覽器會緩存大量的RequestAnimationFrame事件,導(dǎo)致很多的update函在做無用功。其次,在每次執(zhí)行RequestAnimationFrame的時候,里面對dom元素的屬性進(jìn)行了修改,引起了很多的Reflow和Repaint事件,顯然完成所有的Reflow和Repaint時間的遠(yuǎn)遠(yuǎn)超過16ms。

       為了解決第一個問題,首先要將scroll和RequestAnimaitonFrame函數(shù)分離,修改后的代碼如下:

  1. var latestKnownScrollY = 0;
  2. function onScroll() {
  3. latestKnownScrollY = window.scrollY;
  4. }

  5. function update() {
  6.   requestAnimationFrame(update);
  7.   var currentScrollY = latestKnownScrollY;

  8.   // read offset of DOM elements
  9.   // and compare to the currentScrollY value
  10.   // then apply some CSS classes
  11.   // to the visible items
  12. }

  13. // kick off
  14. requestAnimationFrame(update);
復(fù)制代碼

       上面的代碼,scroll事件僅負(fù)責(zé)將最新的窗口位置,賦值給一個變量。這樣的話,可以避免大量的RequestAnimationFrame事件被緩存,從而真正讓RequestAnimationFrame按照瀏覽器的能力,進(jìn)行動畫渲染。

       對于第二個問題,唯一的辦法,盡量的減少Repaint和Reflow的事件。道理雖然簡單,但是優(yōu)化難度很大,要求讀者對于Dom的渲染的每個函數(shù)都非常熟悉。下面列出幾篇文章,僅供參考:

       ClassList for great good.

       Breakdown of repaint.

       Learning from Twitter

       (未完待續(xù))

       上文:

       HTML5游戲開發(fā) 之 循環(huán)的控制(2)

       HTML5游戲開發(fā) 之 循環(huán)的控制(1)

        HTML5 游戲開發(fā) 之 資源加載篇(2)

        HTML5 游戲開發(fā) 之 資源加載篇(1)


【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實際運行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對JavascriptAPI的擴(kuò)展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗,特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認(rèn)!這是對我的極大鼓勵!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實驗、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 一区二区三区视频在线观看 | 日韩电影a | 欧美一级免费 | 特级做a爰片毛片免费看108 | 爱操av | 日韩欧美精品一区 | 久久一二| 国产区一区 | 波多野结衣一二三区 | 久久精品视频免费观看 | 国产日韩欧美一区二区 | 欧美大片一区 | 精品久久久久久亚洲综合网 | 国产传媒毛片精品视频第一次 | 亚洲一区二区三区四区在线观看 | 欧美久久一级 | 日韩a级片| 一级片网址 | 欧美一区二区三区在线播放 | 日韩欧美在线播放 | 亚洲国产成人精品女人久久久 | 91久久国产精品 | 亚洲国产高清在线观看 | 97色免费视频 | 国产精品久久久久久久久久久久久 | 日韩精品在线一区 | 国产日韩一区二区 | 国产一区二区三区高清 | 一区二区视频 | 国产一级视频在线播放 | 亚洲精品免费在线 | 亚洲免费人成在线视频观看 | 国产精品久久视频 | 国产精品久久久久久久久久三级 | 日本在线一区二区 | 亚洲看片 | 日韩免费视频一区二区 | 中文字幕在线一区二区三区 | av特级毛片 | 亚洲精品av在线 | 国产精品免费福利 |