• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > HTML5 游戏开发 之 资源加载篇(2)

HTML5 游戏开发 之 资源加载篇(2)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5教程,HTML5中国,HTML5 游戏开发 之 资源加载篇(2),html5cn,html5资料,html5文等相关知识,匿名希望在学习及工作中可以帮助到您
四) 下载过程的管理

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

在游戏开发的过程中,很有可能会有成千上百张图片。最直接的方式,是将这些图片编写在代码中,但是图片的名字很容易改变的,会造成大量的维护工作,甚至影响代码的打包和发布。我的同事Boris,在他的代码演示库中,给出了一个参考实现方式,如下。这种方式,可以保证,在需要修改或者调整资源名称或者路径的时候,不需要接触代码。

  • "assetRoot": "url/to/assets",
  • "bundles": [
  • {
  • "name": "unique bundle name",
  • "contents": [
  • "relative/path/to/asset.jpg",
  • "another/asset.mp3"
  • ]
  • },
  • "autoDownload": true
  • }
  • var gal = new GameAssetLoader("http://path.to/gal.manifest");
  • // Load the GAL. If manifest indicates autoDownload, this call will
  • // start loading assets one by one.
  • gal.init(function() {
  • // Called when the library is initialized
  • });
  • 复制代码
    更完整的代码,可以参考GitHub上的源代码

    4.2) 如何实现批处理的下载

    再获得了资源列表之后,就要开始资源的下载。显然,需要这样的方法。

  • for (var i = 0; i < this.downloadQueue.length; i++) {
  • var path = this.downloadQueue[i];
  • var img = new Image();
  • var that = this;
  • img.addEventListener("load", function() {
  • // coming soon
  • }, false);
  • img.addEventListener("error", function() {
  • // coming soon
  • }, false);
  • img.src = path;
  • }
  • }

  • 下载的过程中,一般情况下都需要一个进度条,来显示完成的情况,所以必须对AssetManager进行计数。



  • function AssetManager() {
  • this.successCount = 0;
  • this.errorCount = 0;
  • this.downloadQueue = [];
  • }

  • AssetManager.prototype.isDone = function() {
  • return (this.downloadQueue.length == this.successCount + this.errorCount);
  • }
  • AssetManager.prototype.getProcess = function() {
  • return (this.successCount + this.errorCount)/this.downloadQueue.length;
  • }
  • 复制代码
    显然,也需要对每个img的load和error事件,进行计数。还请注意downloadAll函数有个参数叫做downloadCallback,在资源下载完成以后,通知此函数,进入游戏过程中。

  • that.successCount += 1;
  • if (that.isDone()) {
  • downloadCallback();
  • }
  • }, false);
  • img.addEventListener("error", function() {
  • that.errorCount += 1;
  • if (that.isDone()) {
  • downloadCallback();
  • }
  • }, 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

    (未完待续)

    您可能想查找下面的文章:

    • 一款利用html5和css3动画排列人物头像的实例演示
    • html5教程调用绘图api画简单的圆形代码分享
    • html5教程画矩形代码分享
    • html5教程制作简单画板代码分享
    • html5基础教程常用技巧整理
    • html5教程-Canvas入门
    • html5教程画矩形代码分享
    • HTML5晃动DeviceMotionEvent事件
    • HTML5教程之html 5 本地数据库(Web Sql Database)
    • HTML5中对contenteditable属性的解释与规定

    相关文章

    • 2018-12-03Web 前端分为哪几个大方向,工资待遇如何,辛苦吗?
    • 2018-12-03html5中关于canvas画图之画圆形的实例介绍
    • 2018-12-03处理HTML5新标签的浏览器兼容版问题
    • 2018-12-03WebKit的CSS扩展效果
    • 2018-12-03利用HTML5的新特点实现图片文件异步上传_html5教程技巧
    • 2018-12-03怎样使用phonegap查找联系人
    • 2018-12-03iPhone 上 UC 浏览器和 QQ 浏览器哪个用户更多?
    • 2018-12-03如何用程序解图片迷宫?
    • 2018-12-03html 基于 canvas 实现截图的介绍
    • 2018-12-03Html5页面二次分享的实现

    文章分类

    • html/xhtml
    • html5
    • CSS
    • XML/XSLT
    • Dreamweaver教程
    • Frontpage教程
    • 心得技巧
    • bootstrap
    • vue
    • AngularJS
    • HBuilder教程
    • css3
    • 浏览器兼容
    • div/css
    • 网页编辑器
    • axure

    最近更新的内容

      • html5 viewport使用方法示例详解_html5教程技巧
      • 利用h5实现获取用户地理定位
      • h5 video标签用法的实例代码
      • HTML5每日一练之meter标签的应用
      • HTML5 规范何时能正式发布?
      • 分享29个基于Bootstrap的HTML5响应式网页设计模板
      • 基于html5 DeviceOrientation 实现微信摇一摇功能_html5教程技巧
      • 前端里移动端到底比 PC 端多哪些知识,为什么面试时好多公司都问 H5 水平如何?该从哪里入手学习?
      • Canvas与Image互相转换示例代码
      • html5 touch事件实现页面上下滑动效果【附代码】

    关于我们 - 联系我们 - 免责声明 - 网站地图

    ©2020-2025 All Rights Reserved. linkedu.com 版权所有