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

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

在游戲開發的過程中,很有可能會有成千上百張圖片。最直接的方式,是將這些圖片編寫在代碼中,但是圖片的名字很容易改變的,會造成大量的維護工作,甚至影 ... ...,HTML5中國,中
       四) 下載過程的管理

       4.1) 如何管理成千上百的資源

       在游戲開發的過程中,很有可能會有成千上百張圖片。最直接的方式,是將這些圖片編寫在代碼中,但是圖片的名字很容易改變的,會造成大量的維護工作,甚至影響代碼的打包和發布。我的同事Boris,在他的代碼演示庫中,給出了一個參考實現方式,如下。這種方式,可以保證,在需要修改或者調整資源名稱或者路徑的時候,不需要接觸代碼。

  1. {
  2.   "assetRoot": "url/to/assets",
  3.   "bundles": [
  4.   {
  5.         "name": "unique bundle name",
  6.         "contents": [
  7.         "relative/path/to/asset.jpg",
  8.         "another/asset.mp3"
  9.           ]
  10.   },
  11.   "autoDownload": true
  12. }
  13. var gal = new GameAssetLoader("http://path.to/gal.manifest");
  14. // Load the GAL. If manifest indicates autoDownload, this call will
  15. // start loading assets one by one.
  16. gal.init(function() {
  17. // Called when the library is initialized
  18. });
復制代碼

       更完整的代碼,可以參考GitHub上的源代碼

       4.2) 如何實現批處理的下載

       再獲得了資源列表之后,就要開始資源的下載。顯然,需要這樣的方法。

  1. AssetManager.prototype.downloadAll = function(downloadCallback) {
  2.   for (var i = 0; i < this.downloadQueue.length; i++) {
  3.   var path = this.downloadQueue[i];
  4.   var img = new Image();
  5.   var that = this;
  6.   img.addEventListener("load", function() {
  7.         // coming soon
  8.   }, false);
  9.   img.addEventListener("error", function() {
  10.   // coming soon
  11.   }, false);
  12.   img.src = path;
  13. }
  14. }
  15. <pre>
  16. 下載的過程中,一般情況下都需要一個進度條,來顯示完成的情況,所以必須對AssetManager進行計數。<strong><strong>
  17. </strong></strong>

  18. <pre lang="html">
  19. function AssetManager() {
  20.   this.successCount = 0;
  21.   this.errorCount = 0;
  22.   this.downloadQueue = [];
  23. }

  24. AssetManager.prototype.isDone = function() {
  25.   return (this.downloadQueue.length == this.successCount + this.errorCount);
  26. }
  27. AssetManager.prototype.getProcess = function() {
  28.   return (this.successCount + this.errorCount)/this.downloadQueue.length;
  29. }
復制代碼

       顯然,也需要對每個img的load和error事件,進行計數。還請注意downloadAll函數有個參數叫做downloadCallback,在資源下載完成以后,通知此函數,進入游戲過程中。

  1. img.addEventListener("load", function() {
  2.   that.successCount += 1;
  3.   if (that.isDone()) {
  4.         downloadCallback();
  5.   }
  6. }, false);
  7. img.addEventListener("error", function() {
  8.   that.errorCount += 1;
  9.   if (that.isDone()) {
  10.         downloadCallback();
  11.   }
  12. }, false
復制代碼

       4.3) 游戲中的不同關卡

       游戲通常是分關卡的,完全沒有必要在一開始就將游戲的所有資源下載到本地,畢竟不是每個玩家都會將游戲通關。為了按需下載,比較完備的資源加載器,應該可以對每個資源配上一個標簽或者屬性,可以標志它屬于哪一關。每一關的開始,只下載和本關相關聯的資源,在每一關結束的時候,在去下載下一關的資源。不僅減少用戶的不必要的等待時間,還可以有效的減少服務器的壓力。

       5.資源加載器的具體實現

       5.1 PreloadJS

       官方網站:http://www.createjs.com/#!/PreloadJS/download

       開源代碼:https://github.com/CreateJS/PreloadJS/

       專門用于資源下載的類庫,非常好用,考慮的也非常全面,首先推薦的一款軟件,尤其是讀者不希望加載特別大的游戲引擎是,這款軟件可以作為首選。

       具體的例子可以參考:https://github.com/CreateJS/PreloadJS/tree/master/examples

(未完待續)

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

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 桂林腻子粉_内墙外墙抗裂砂浆腻子粉推荐广西鑫达涂料厂家供应 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | OpenI 启智 新一代人工智能开源开放平台 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 出国劳务公司_正规派遣公司[严海] | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 加盟店-品牌招商加盟-创业项目商机平台| 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 企业VI设计_LOGO设计公司_品牌商标设计_【北京美研】 | 广州各区危化证办理_危险化学品经营许可证代办 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 污水提升器,污水提升泵,污水提升装置-德国泽德(zehnder)水泵系统有限公司 | 电磁辐射仪-电磁辐射检测仪-pm2.5检测仪-多功能射线检测仪-上海何亦仪器仪表有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 汕头市盛大文化传播有限公司,www.11400.cc | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 |