首頁 web前端 H5教程 HTML5游戏开发 之 循环的控制(1)

HTML5游戏开发 之 循环的控制(1)

May 17, 2016 am 09:08 AM

       1) 动画绘制的利器:RequestAnimationFrame

       RequestAnimationFrame,绝对的大名鼎鼎。相信做HTML5的同学们,都听到过这个函数。再重复一下它的好处:
游戏页面在不被显示的时候,RequestAnimationFrame暂停执行,不会占用CPU时间
RequestAnimaitonFrame会将JS产生的动画以及CSS产生的动画,放到同一个Repait和Reflow的循环中。

       对于第二点,很少有人提及,但是非常重要,如果没有RequestAnimationFrame,而用setTimeout,很有可能在每次绘制的时候,JS产生的动画和CSS产生的动画,没有同时发生,相信这个肯定不是你想要的结果。对于第二点,有点晦涩,不太容易懂,让我们更进一步解释一下,这就要从浏览器的渲染流程说起。大体上,浏览器的渲染流程有以下四步:

       更新Dom的结构:每次你执行JS改变Dom结构,或者修改CSS相关属性,都会对Dom结构进行改变。现在HTML5中,多了Canvas元素,对于Canvas对象,执行某个操作,比如画一条线,也属于对Dom结构的改变。但是Canvas有个比较特殊的操作,比如对Canvas对象执行getImageData操作,会强制浏览器立即跳到第四步,将渲染好的浏览器窗口,绘制到屏幕。
渲染每个元素:在所有JS和CSS执行完毕之后,浏览器按照要求,开始对每个元素进行渲染。

  • 将所有元素渲染到窗口:按照窗口大小的要求,将所有的元素,绘制到一个平面上。

  • 通过操作系统窗口管理器,将渲染好的窗口,输出到屏幕。

       通常,执行完第四步,称为一帧。目前,大部分的显示器,都会将显示控制在每秒六十帧,浏览器处于优化的目的,通常的显示频率也不会超过六十帧。

       讲到这里,大约可以清楚一点,如果不用RequestAnimationFrame,而是用传统的SetTimeout,很难要求浏览器将同一次SetTimeout里面执行的Dom或者CSS操作放到同一帧中,也就会随机的出现,某个JS操作的动画和CSS或者Canvas的动画,不能同步。因为随机的,每次行为不一致,相信这是所有开发者都不愿意碰到的情况。没有开发人员怕Bug,但是害怕的是Bug不可以重现。

       2) 计算游戏的帧率(FPS)

       衡量游戏性能的重要指标就是帧率(FPS),因为浏览器的实现不一,有些浏览器出于优化的目的,没有严格的按照第一部分介绍的四步,有些时候,在某一帧没有完成的时候,就开始执行下一帧,所以理论上,很难严格的记录浏览器显示的帧率。如果你可以有个高速的摄像机,对着屏幕拍摄,是可以严格的记录屏幕显示的帧率,但是相信这个方法,很难被大规模使用。

       目前也有一些第三方类库,可以帮助你衡量游戏的帧率,比如比较著名的https://github.com/mrdoob/stats.js,但是这个是非常不严格的,以StatsJS为代表的类库,是利用很衡量setTimeout或者setInterval每秒钟被执行的次数或者时间,来衡量帧率的。但是seTimeout函数被执行的次数和时间,和RequestAnimationFrame没有特别严格的对应关系,只可以作为参考。或者,简单一点说,每一帧被渲染的过程中,setTimetout函数很有可能被执行一次或者两次,甚至更多次。

       理论上,为了监控RequestAnimationFrame帧率,需要开发者hook RequestAnimaitonFrame这个函数,在函数每次执行完毕的时候,执行Canvas的getImageData操作,强制浏览器渲染本次RequestAnimationFrame的所有操作,计算两次渲染操作的时间差,从而得出帧率。

       幸运的是,Firefox浏览器已经开发了得到帧率的接口,可以省去很多周折。比如window.mozPaintCount这个接口,可以直接告诉开发者,浏览器渲染的帧率。

(未完待续)

接上文:HTML5 游戏开发 之 资源加载篇(2)  
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
H5指的是什麼?探索上下文 H5指的是什麼?探索上下文 Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5:網絡標準和技術的發展 H5:網絡標準和技術的發展 Apr 15, 2025 am 12:12 AM

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显著的发展。1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。2)CSS3增加了动画和过渡功能,使页面效果更加丰富。3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5代碼:Web開發人員的最佳實踐 H5代碼:Web開發人員的最佳實踐 Apr 16, 2025 am 12:14 AM

H5代碼的最佳實踐包括:1.使用正確的DOCTYPE聲明和字符編碼;2.採用語義化標籤;3.減少HTTP請求;4.使用異步加載;5.優化圖像。這些實踐能提升網頁的效率、可維護性和用戶體驗。

H5:工具,框架和最佳實踐 H5:工具,框架和最佳實踐 Apr 11, 2025 am 12:11 AM

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

H5是HTML5的速記嗎?探索細節 H5是HTML5的速記嗎?探索細節 Apr 14, 2025 am 12:05 AM

H5不僅僅是HTML5的簡稱,它代表了一個更廣泛的現代網頁開發技術生態:1.H5包括HTML5、CSS3、JavaScript及相關API和技術;2.它提供更豐富、互動、流暢的用戶體驗,能在多設備上無縫運行;3.使用H5技術棧可以創建響應式網頁和復雜交互功能。

H5和HTML5:網絡開發中常用的術語 H5和HTML5:網絡開發中常用的術語 Apr 13, 2025 am 12:01 AM

H5與HTML5指的是同一個東西,即HTML5。 HTML5是HTML的第五個版本,帶來了語義化標籤、多媒體支持、畫布與圖形、離線存儲與本地存儲等新功能,提升了網頁的表現力和交互性。

HTML5的遺產:當前了解H5 HTML5的遺產:當前了解H5 Apr 10, 2025 am 09:28 AM

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

了解H5代碼:HTML5的基本原理 了解H5代碼:HTML5的基本原理 Apr 17, 2025 am 12:08 AM

HTML5是構建現代網頁的關鍵技術,提供了許多新元素和功能。 1.HTML5引入了語義化元素如、、等,增強了網頁結構和SEO。 2.支持多媒體元素和,無需插件即可嵌入媒體。 3.表單增強了新輸入類型和驗證屬性,簡化了驗證過程。 4.提供了離線和本地存儲功能,提升了網頁性能和用戶體驗。

See all articles