pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

HTML5游戲開發 之 循環的控制(2)

3) 如何調試幀率理想的狀態是,將游戲控制在60幀,這樣充分利用顯示器的能力,為用戶提供流暢的畫面。但是,通常情況下還是比較困難的,隨著游戲邏輯的復雜性,幀率一般情況下都
       3) 如何調試幀率

       理想的狀態是,將游戲控制在60幀,這樣充分利用顯示器的能力,為用戶提供流暢的畫面。但是,通常情況下還是比較困難的,隨著游戲邏輯的復雜性,幀率一般情況下都會下降。如果可以有一種可視化的方法,幫助開發者去觀察每次RequestAnimationFrame的執行時間,可以讓開發者及時的發現一些耗時的操作,盡量保證每次RequestAnimationFrame的執行時間控制在16ms內完成。

       雖然目前還沒有發現同一的方法,但是Chrome提供了abut:tracing的標簽頁,可以輔助開發者,去一探RequestAnimationFrame的究竟。不過,困難的是,如果想完全讀懂 about:tracing,需要對于chrome的架構以及渲染方式非常熟悉,在加上GPU的原因,很難一下子完全理解整個頁面。

       這里介紹一個簡單的用法,如下圖,是從我的同事Seth的Blog中復制的圖片,(如果想了解更多內容,可以參考Box2D, Web workers, Better performance),可以注意到,圖中有兩個紅線,紅線之間的間隔是16毫秒,相信很容易想到,這是每幀執行的最佳時間。在about:tracing頁面中,雙擊每個方塊,可以放大并出現每個函數的名字,按G,就可以立即出現兩邊的紅線。里面有個泛藍色的模塊,標志WebViewImp:animate,它就是負責執行RquestAnimationFrame,貌似它的執行時間沒有超過16ms,但是不幸的,因為在執行完RequestAnimationFrame之后,瀏覽器還對于需要渲染的元素,執行組裝和渲染操作,很明顯下圖中的渲染時間,超過了紅線的范圍,也就是超過了16ms,圖形渲染的效率自然會降低到60幀一下。

Screen shot 2011-09-12 at 9.57.59 PM.png


       通過這個例子,可以看出,并不是把RequestAnimationFrame的執行時間控制在16ms以內,就可以得到60幀率的渲染。還需要整體考慮,RequstAnimationFrame引起了多少元素的渲染,以及多大程度的重繪。

       about:tracing是非常好用的頁面,有更多興趣的同學,還請耐心學習chrome的渲染方式:
Trace Event Profiling Tool (about:tracing)

       4) 頁面顯示API

        RequestAnimationFrame很重要的優點,就是在Tab沒有被顯示的時候,可以暫停執行,不消耗CPU資源。對于大部分的動畫需求,是沒有問題的,但是也不能適應于所有的場景,舉個例子,現在很多攻防類的游戲,在進攻其他家城堡的時候,可以派兵進行打仗。兩軍對陣的場景,通常是一段設計好的動畫,有時候動畫的時間還比較長,很多玩家會切換到其他頁面,用戶的本意是在其他網頁等待對戰結束。而RequestAnimationFrame控制的動畫循環,會因為切換到其他頁面,暫停執行,從而違背了設計的初衷,也違背用戶的一些習慣??梢詮某绦蜻壿嬌媳荛_這個問題,比如人為加入一些計時器,按照時間播放相關的動畫,但是這樣容易和主程序的循環出現邏輯上的混亂。幸運的是,HTML5提供了Page Visibility的API。這個API可以在Tab被切換的時候,產生一定的回調,從而可以讓開發者明確知道,目前頁面處于哪種顯示的狀態。

  1. function handleVisibilityChange() {
  2. if (document.webkitHidden) {
  3. if (playAnimation is true)
  4. //continue to do this animation
  5. }
  6. }

  7. document.addEventListener(“webkitvisibilitychange”, handleVisibilityChange, false);
復制代碼

        上面是一段簡單的代碼,在發現頁面不被顯示的時候,可以執行一些必須被執行的動畫。

        5) Webworker的作用

        現在很多的游戲,都利用到了Box2d或者其他重力引擎,而這種重力引擎的計算,相當耗費時間,如果將這些計算放在RequestAnimationFrame里面,很容易就會將每次執行的時間,超過16ms。最好可以將這類高成本的計算,放在一個單獨的線程,每次RequestAnimationFrame只需要取到結果就可以了。

webworker.png



        HTML5的webworker,剛好可以承擔這個角色。如上圖,是一個簡單的設計圖,box2d重力引擎,作為獨立計算的單元,存在于webworker內部,利用setTimeout作為循環控制。在外部,RequestAnimationFrame控制動畫的顯示。

        具體的代碼和例子,可以參考:Box2D and Web workers for JavaScript developers

        6) 毫秒精度的用處

        RequestAnimationFrame最近剛推出了新的功能,可以提供微妙級別的精度,這個有什么用處呢?按照前面的說法,每秒60幀的顯示,每幀的具體時間為(1000毫秒/60),大約為16.67毫秒。如果只有毫米級別的精度,為了有效的控制RequestAnimationFrame的執行時間,只能以整毫秒的精度,對RequestAnimationFrame進行檢查,也就說,假設RequestAnimationFrame計劃在5.5毫秒后執行,如果執行到某一步,發現當前時間已經是5毫秒,雖然理論上也許還有0.5毫秒的時間可以使用,但是不能在進行下一步的?,F在有了微秒級別的精度,可以做更精細的控制。下圖的解釋比較形象,上面是16.667每幀可以執行的時間,下面是整毫秒數標志的時間,顯然下面的圖,會浪費很多的時間片。

oimg-key=0ArK1Uipy0SbDdHJXSjQwRW1iYzItRG5TMjRfbnNZWFE&oid=1&zx=a3ikc9ylp9j.png



        目前,在chrome中,是通過window.performance.webkitNow()獲得高精度的時間的,相信不久的將來,很快就會變成標準performance.now()。

(未完待續)

接上文:

        HTML5游戲開發 之 循環的控制(1)

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

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



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

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 碳纤维布-植筋胶-灌缝胶-固特嘉加固材料公司 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 包装机_厂家_价格-山东包装机有限公司| 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 挨踢网-大家的导航!| 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 工业洗衣机_工业洗涤设备_上海力净工业洗衣机厂家-洗涤设备首页 bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 移动厕所租赁|移动卫生间|上海移动厕所租赁-家瑞租赁 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 广州迈驰新GMP兽药包装机首页_药品包装机_中药散剂包装机 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 非甲烷总烃分析仪|环控百科 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 减速机_上海宜嘉减速机| 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 泰州物流公司_泰州货运公司_泰州物流专线-东鑫物流公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | DDoS安全防护官网-领先的DDoS安全防护服务商| 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 |