Preload基础使用方法详解


Posted in Javascript onFebruary 03, 2020

PreloadJS是一个用来管理和协调相关资源加载的类库,它可以方便的帮助你预先加载相关资源,例如

图片,文件,音频,数据,其他

它使用了XHR2来提供实时的加载进度信息,如果不支持则使用标签式的简化进度来实现进度展示。

支持多队列,多连接,暂停队列等等功能

在PreloadJS中,LoadQueue是主要用来预加载内容的API。LoadQueue是一个加载管理器,可以预先加载一个文件或者一个文件队列。

var queue = new createjs.LoadQueue(true);

以上代码中,传递一个false参数则强制使用标签式的加载。LoadQueue包含了以下几个可以订阅的事件:

complete: 当队列完成全部加载后触发

error: 当队列遇到错误时触发

progress: 整个队列变化时展示的进度

fileload: 一个单独文件加载完毕

fileprogress: 一个单独文件变化的进度,请注意只有文件使用XHR加载才会触发,其它只会显示0或者100%

可以通过调用loadfile("文件路径")加载一个文件或者调用loadMnifest()来加载多个文件。

LoadQueue支持相关文件类型如下:

BINARY: XHR调用的二进制文件

CSS: CSS文件

IMAGE: 一般图片文件格式

JAVASCRIPT: JavaScript文件

JSON: JSON数据

JSONP: 跨域JSON文件

MANIFEST: JSON格式的文件列表

SOUND: 音频文件

SVG: SVG文件

TEXT: 文本文件 - 仅支持XHR

XML: XML数据

代码示例:

var canvas = document.getElementById("myCanvas");
var stage = new createjs.Stage(canvas);
var manifest;
var preload;
var progressText = new createjs.Text("", "20px Arial", "#dd4814");
progressText.x = 125 - progressText.getMeasuredWidth() / 2;
progressText.y = 20;
stage.addChild(progressText);
stage.update();
//定义相关JSON格式文件列表
function setupManifest() {
  manifest = [{
    src: "http://cdn.gbtags.com/EaselJS/0.7.1/easeljs.min.js", 
    id: "easeljs"
  }, {
    src: "http://www.gbtags.com/gb/networks/uploadimgthumb/4d8f3f13-89c0-455c-95f3-ba5120c2f123.jpg",
    id: "logo"
  }, {
    src: "http://www.gbtags.com/tutorials/html5-tutorial/html5-demos/assets/song.ogg",
    id: "audiofile"
  }
 
  ];
  for(var i=1;i<=10;i++)
    manifest.push({src:"http://www.gbtags.com/gb/laitu/200x200"})
}
//开始预加载
function startPreload() {
  preload = new createjs.LoadQueue(true);
  //注意加载音频文件需要调用如下代码行
  preload.installPlugin(createjs.Sound);     
  preload.on("fileload", handleFileLoad);
  preload.on("progress", handleFileProgress);
  preload.on("complete", loadComplete);
  preload.on("error", loadError);
  preload.loadManifest(manifest);
 
}
//处理单个文件加载
function handleFileLoad(event) {
  console.log("文件类型: " + event.item.type);
  if(event.item.id == "logo"){
    console.log("logo图片已成功加载");
  }
}
 
//处理加载错误:大家可以修改成错误的文件地址,可在控制台看到此方法调用
function loadError(evt) {
  console.log("加载出错!",evt.text);
}
 
//已加载完毕进度 
function handleFileProgress(event) {
  progressText.text = "已加载 " + (preload.progress*100|0) + " %";
  stage.update();
}
//全度资源加载完毕
function loadComplete(event) {
  console.log("已加载完毕全部资源");
}
setupManifest();
startPreload();

更多关于PreloadJS使用方法请点击下面的相关链接

Javascript 相关文章推荐
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 Javascript
jQuery 操作XML入门
Dec 25 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
Angular Renderer (渲染器)的具体使用
May 03 Javascript
JavaScript+H5实现微信摇一摇功能
May 23 Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 Javascript
JQuery Ajax如何实现注册检测用户名
Sep 25 jQuery
使用PreloadJS加载图片资源的基础方法详解
Feb 03 #Javascript
使用preload预加载页面资源时注意事项
Feb 03 #Javascript
jQuery实现小火箭返回顶部特效
Feb 03 #jQuery
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 #Javascript
微信小程序实现上传多个文件 超过10个
Mar 30 #Javascript
微信小程序实现同时上传多张图片
Feb 03 #Javascript
解决小程序无法触发SESSION问题
Feb 03 #Javascript
You might like
如何做到多笔资料的同步
2006/10/09 PHP
PHP的FTP学习(一)
2006/10/09 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python函数参数类型*、**的区别
2015/04/11 Python
Python进程间通信用法实例
2015/06/04 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python 实现让字典的value 成为列表
2019/12/16 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
J2EE相关知识面试题
2013/08/26 面试题
会计系毕业个人自荐信格式
2013/09/23 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
工作求职信
2014/07/04 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
于丹论语心得观后感
2015/06/15 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
校园新闻稿范文
2015/07/18 职场文书