`
caibinghong
  • 浏览: 143167 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

关于网页资源的动态加载问题,并判断其加载是否成功

 
阅读更多

这个问题一直从去年遗留到现在,今天找个空,把她找到了。

 

是有

Kinogam

原创文章

 

 

 

 

用于HTML5游戏开发的资源加载器

 

之前我在开发一个飞机射击类的html5游戏,需要处理一下类似图片和音频的加载,因为web workers暂时还不是大部分浏览器都支持,所以我开发了一个资源加载器SourceLoader。
游戏开发的话,我们需要加载各种各样的素材和数据(加载数据我暂时还没并在这个类里一起处理)

为了让大家更好的关注游戏的用户体验,我们需要更多便利的工具,现在我来介绍下SourceLoader。

    var rl = new ResourceLoader();
    rl.add({ type: "image", key: "pic1", src: "1.jpg" });

ResourceLoader 有 add 方法,参数是一个json对象,type表示资源的类型,暂时有”image”,”audio”,”video” 3种,分别表示图片、音频、视频资源;key表示资源使用的时候对应的名字,比如 rl.rs["pic1"] 就可以获得 1.pig的Image对象;src表示该资源的URL地址。

以下我们用一个单元测试的用例来介绍下回调:

asyncTest("resource list items callback test", function () {
    var rl = new ResourceLoader();
    rl.add({ type: "image", key: "pic1", src: "1.jpg" });
    rl.add({ type: "audio", key: "audio1", src: "01.mp3" });
    rl.add({ type: "video", key: "video1", src: "01.mp4" }); 
 
    rl.itemLoad = function () {
        ok(true, "item " + this.type + " callback success");
    }
    rl.onload = function () {
        ok(true, "all items callback success");
        start();
    }
    rl.load();
});

itemLoad表示每个资源加载完成时的回调事件,里面的this表示当前的资源的json,比如1.pig加载完的时候,this表示{ type: “image”, key: “pic1″, src: “1.jpg” }。
onload表示所有资源都加载完之后的回调事件,平时可以在所有资源都加载完毕之后就正式进入游戏(开始执行事件绑定或开始画图),比如这样:

    fl.prototype.startGame = function (tfn) {
 
        this.x = this.canvas.width / 2 - 25;
        this.y = this.canvas.height - 50;
 
        var fobj = this;
 
        this.loader.onload = function () {
            fobj.regEvent();
            fobj.draw(fobj, tfn);
        };
        this.loader.load();
    }

要开始资源加载的时候,我们可以使用 load 方法。

另外,该类也有清空资源的方法

   rl.clearItem("pic1");
   rl.clearAll();

假如大家有兴趣使用 ResourceLoader 的话,可以关注一下,源代码可以在这里下载
https://github.com/kinogam/ResourceLoader

分享到:
评论

相关推荐

    jquery网页加载进度条的实现

    但是目前的浏览器并没有提供页面加载进度方面的接口,也就是说页面还无法准确返回页面实际加载的进度,本文中我们使用jQuery来实现页面加载进度条效果。 首先我们要知道的是,目前没有任何浏览器可以直接获取正在...

    javascript写的网页代码高亮插件免费放出.rar

    可自动识别HTML/CSS/JS代码,同时也能高亮显示HTML网页中嵌套的CSS和JS,有些判断并不是很严谨,但是多数情况下是适用的,SyntaxHighlighter的功能也具备了,但是加载很快,不臃肿,优点多多哦……

    ASP.NET的网页代码模型及生命周期

    Web应用实际上是没有状态的,这就说明Web应用程序不自动指示序列中的请求是否来自相同的浏览器或客户端,也无法判断浏览器是否一直在浏览一个页面或者一个站点,也无法判断用户执行了哪个操作并统计用户的喜好。...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Webview WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页 Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与...

    大数据爬虫技术第3章 网页请求原理.ppt

    Upgrade-Insecure-Requests(升级为HTTPS请求) 表示升级不安全的请求,意思是会在加载 HTTP 资源时自动替换成HTTPS请求,让浏览器不再显示HTTPS页面中的HTTP请求警报。 User-Agent(浏览器名称) 标识客户端身份的...

    C++网络爬虫项目

    所以,如何自动发现作弊网页并对其给于相应的惩罚,就成了 搜索引擎非常重要的功能之一。 1.2. 网络爬虫 通用搜索引擎的处理对象是互联网网页,截至目前的网页数量数以百万计,所 以搜索引擎首先面临的问题就是如何...

    基于自身项目搭建的一个flutter框架

    1. 该框架使用GetX进行状态...6. flutter_inappwebview加载网页; ... 资源上传前进行了flutter clean,下载并解压后,请先pub get PS: 使用该flutter框架,已上架多个iOS/Android应用,并已迭代多次,时间跨度已近两年

    安卓java读取网页源码-webp-example:文章webp实践中代码

    那么在页面中对于安卓用户中图片资源加载大小会有大幅度下降。 四、webp在各大网站的使用 淘宝中大量使用webp。 cdn 各大cdn也是支持webp图片格式输出。 五、项目中的实践 实践中对h5活动页采用webp图片加载方案。h5...

    向日葵甘特图组件1.5版

    1、 增加了甘特图中每个组件的isUsing属性,可以判断其是否加载,从而可以允许用户灵活地显示/隐藏 链接线,进度线等组件 ; 2、 当甘特图任务数比较少的情况下,甘特图自动在下方平铺甘特图样式,实现更为一致的...

    google android sdk开发范例大全 第二版 PDF 光盘代码

     8.21 快照WebView加载的网页画面   8.22 网页的放大与缩小  第9章 Google服务与Android完美整合   9.1 Google账号验证Token   9.2 Google搜索   9.3 前端产生QR Code二维条形码   9.4 以...

    unity2d 游戏开发资源 unity2d 游戏开发资源

    84 创建粒子对象 84 认识粒子属性 85 7.2 寻找粒子系统的在线资源 88 认识 Unity Asset Store 88 加载在线资源 89 7.3 范例—实现粒子特效动画 90 制作导弹预制对象 91 制作爆炸预制对象 93 制作墙壁对象 94 加入...

    基于Python和Selenium的ti9抢票脚本+源代码+文档说明

    该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! ...

    Google Android SDK开发范例大全(第3版) 1/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版) 4/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版) 3/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版) 5/5

    3.24 判断手机操作系统版本是否允许运行程序 3.25 两个不同的程序彼此调用 3.26 指定安装应用程序迁移至SD卡 3.27 手机动态Layout主题随手势物换迁移 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞 4.2 ...

    Google Android SDK开发范例大全(第3版)part2

     3.24 判断手机操作系统版本是否允许运行程序  3.25 两个不同的程序彼此调用  3.26 指定安装应用程序迁移至SD卡  3.27 手机动态Layout主题随手势物换迁移  第4章 史上超豪华的手机控件  4.1 EditText与...

    如何使用JavaScript检测空闲的浏览器选项卡

    启动轮询器,建立WebSocket连接,甚至加载视频或图片等媒体,都有可能成为性能障碍,尤其是当这些任务在不需要的情况下消耗资源的时候。 在用户没有主动与界面交互的同时,从不必要的工作负载或网络请求中释放主线程...

    《Google Android SDK开发范例大全(第3版)》.pdf

    3.24 判断手机操作系统版本是否允许运行程序 72 3.25 两个不同的程序彼此调用 75 3.26 指定安装应用程序迁移至sd卡 78 3.27 手机动态layout主题随手势物换迁移 79 第4章 史上超豪华的手机控件 84 4.1...

Global site tag (gtag.js) - Google Analytics