概述

原来的cc.Loader被改造为一个单例cc.loader,采用了插件机制设计,让loader做更纯粹的事。

各种资源类型的loader可以在外部注册进来,而不是直接将所有的代码杂揉在cc.Loader中,更好的方便管理以及用户自定义loader的创建。

cc.loader中包含了一些网络资源获取的基本api,例如加载js、加载image等。

API描述

(注:以下描述中,全路径的意思为 "资源的根路径" + "资源路径", 例如设置图片资源根路径(cc.loader.resPath)为"res",图片资源路径为"a.png", 那么全路径为"res/a.png",非全路径为"a.png"。)

resPath

资源的根路径(音频资源除外)。

audioPath

音频资源的根路径。

getXMLHttpRequest

获取XMLHttpRequest对象。

loadJs

加载js文件。

参数:
url 资源路径(注意,必须是全路径)
cb 回调函数 返回值: 无
  • 用法1:
cc.loader.loadJs("src", [
"a.js", "b.js"
], function(err){
if(err) return console.log("load failed");
//success
});
  • 用法2:
cc.loader.loadJs([
"src/a.js", "src/b.js"
], function(err){
if(err) return console.log("load failed");
//success
});
  • 用法3:
cc.loader.loadJs("src/a.js", function(err){
if(err) return console.log("load failed");
//success
});
loadJsWithImg

用法同loadJs,只是在加载js文件的时候会显示一个loading的图片而已。

loadTxt

加载文本资源。

参数:
url 资源路径(注意,必须是全路径)
cb 回调函数 返回值: 无

用法:

cc.loader.loadTxt("res/a.txt", function(err, data){
if(err) return console.log("load failed");
//success
});
loadImg

加载图片资源。

参数:
url 资源路径(注意,必须是全路径)
option 选项,目前结构如:`{isCrossOrigin : true}`,`isCrossOrigin`默认为`true`(可选)
cb 回调函数 返回值: Image对象。
loadBinary

加载二进制文件(异步)。

参数:
url 资源路径(注意,必须是全路径)
cb 回调函数 返回值: 二进制数据。
loadBinarySync

加载二进制文件(同步,不推荐使用)。

参数:
url 资源路径(注意,必须是全路径)
cb 回调函数 返回值: 二进制数据。
getUrl

获取到资源全路径。

参数:
basePath 资源的根路径
url 资源路径 返回值:资源全路径。

用法:

cc.loader.getUrl("res", "a.png");//-->"res/a.png"
cc.loader.getUrl("a.png");//(set cc.loader.resPath = "res")--->"res/a.png"。
load

加载资源的入口api。相当于原来的cc.Loader.preload

参数:
res 资源列表,可以是一个数组或者一个string或者一个包含`src`属性的对象。
option 选项(可选),有以下属性:
cb 回调函数
cbTarget 回调函数的执行者
trigger 触发器(函数)
triggerTarget 触发器的执行者
cb 回调函数(可选)

用法:

var res = ["res/a.png", "res/a.plist", "audio/b.mp3"];
var testTarget = {
name : "the name is testTarget",
trigger : function(){...},
cb : function(err){...}
};
var option = {
trigger : testTarget.trigger,
triggerTarget : testTarget,
cbTarget : testTarget
}
//用法1:
cc.loader.load(res, option, function(err){
if(err) return console.log("load failed");
console.log(this.name);//the name is testTarget
}); //用法2:
cc.loader.load(res, function(err){
if(err) return console.log("load failed");
}); //用法3:
option.cb = testTarget.cb;
cc.loader.load(res, option); //用法4:
cc.loader.load(res);
loadAliases

加载plist配置文件从而获得别名。

参数:
url 配置文件url
配置文件的格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>metadata</key>
<dict>
<key>version</key>
<integer>1</integer>
</dict>
<key>filenames</key>
<dict>
<key>grossini.bmp</key>
<string>res/Images/grossini.png</string>
</dict>
</dict>
</plist> cb 回调 用法: cc.loader.loadAliases("res/lookup-html5.plist", function(){
var sprite = cc.Sprite.create("grossini.bmp");
self.addChild( sprite );
sprite.x = winSize.width/2;
sprite.y = winSize.height/2;
});
register

注册loader。

参数:
extNames 后缀名(String数组或者String)
loader loader对象,
必须包含一个名为"load"的方法,
方法将接受四个个参数:realUrl, url, res, cb,分别表示资源全路径、原来的路径、res对象(就是cc.loader.load方法的资源列表的项),回调函数。
可能包含一个名为"getBasePath"的方法,该方法返回该类型资源的根路径,不设置该方法默认为cc.loader.resPath。 返回值:无

用法:

cc.txtLoader = {
load : function(realUrl, url, res, cb){
cc.loader.loadTxt(realUrl, cb);
}
}
cc.loader.register(["txt", "xml", "tmx", "tsx"], cc.txtLoader);
getRes

获取资源缓存数据。

参数:
url 资源路径(非全路径) 返回值: 资源数据

用法:

var img = cc.loader.getRes("a.png");
release

释放资源缓存数据。

参数:
url 资源路径(非全路径) 返回值: 无

用法:

cc.loader.release("a.png");
releaseAlll

释放所有的资源缓存数据

参数:         无

返回值:       无

用法:

cc.loader.releaseAll();

注册loader插件

引擎自带loader写在CCLoaders.js中。实现方式也很简单,相信看下源码就懂了,这里就不多说了。

资源配置格式

这次cc.loader的改造,也废除了v2版本中一直让人诟病的资源列表的配置。

v2:

var resources = [
{src:"res/a.png"},
{fontName:"Marker Felt",src:[{src:"res/cocosgui/Marker Felt.ttf",type:"truetype"}]},
{
fontName:"Schwarzwald Regular",
src:[
{src:"res/fonts/Schwarzwald_Regular.eot", type:"embedded-opentype"},
{src:"res/fonts/Schwarzwald Regular.ttf",type:"truetype"}
]
}
]

v3:

var resources = [
"res/a.png",
"res/cocosgui/Marker Felt.ttf",
{
type:"font",
name:"Schwarzwald Regular",
srcs:["res/fonts/Schwarzwald_Regular.eot", "res/fonts/Schwarzwald Regular.ttf"]
}
]

在v3中,通常情况下只要配路径就行,这样简化了配置,同时减少了对象的频繁创建。 如果有特殊需求,例如font,就使用{type:"resType", name:"resName"}数据结构自定义自己的资源加载配置方案。 type字段指定注册的loader插件,name加上"."再加上type来作为缓存资源的key值。

注意,v2版本中的资源列表配置在v3中是不支持的。

【cocos2d-js官方文档】九、cc.loader的更多相关文章

  1. bootbox.js官方文档中文版

    bootbox.js官方文档中文版简介:Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Boot ...

  2. Hui之Hui.js 官方文档

    基础 // 判断值是否是指定数据类型 var result = hui.isTargetType("百签软件", "string"); //=>true ...

  3. node.js官方文档解析 02—buffer 缓冲器

    Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存.Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全局 ...

  4. Node.js官方文档:到底什么是阻塞(Blocking)与非阻塞(Non-Blocking)?

    译者按: Node.js文档阅读系列之一. 原文: Overview of Blocking vs Non-Blocking 译者: Fundebug 为了保证可读性,本文采用意译而非直译. 这篇博客 ...

  5. node.js官方文档解析 01—assert 断言

    assert-------断言 new assert.AssertionError(options) Error 的一个子类,表明断言的失败. options(选项)有下列对象 message < ...

  6. bootbox.js官方文档

    简介 Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Bootstrap模态框生成的都是非阻塞事 ...

  7. node.js官方文档chm电子书的制作

    制作软件:WebCHMSetup2.22.zip,http://www.onlinedown.net/soft/31553.htm 制作好的电子书:Node.js(v6.10.2).zip 参考链接: ...

  8. Vue.js官方文档学习笔记(一)起步篇

    Vue.js起步 Vue.js介绍 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库 ...

  9. vue.js官方文档 PDF

    链接:https://pan.baidu.com/s/1jHMBb5W 密码:gsks

  10. Vue.js官方文档学习笔记(三)创建Vue实例

    创建Vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm=new Vue({ //选项 }) Vue的设计受到了mvvm的启发 当创建一个 Vue 实 ...

随机推荐

  1. 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api

    TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...

  2. WCF 透明代理

    现在我们通过类似的原理创建一个用于模拟WCF服务端和客户端工作原理的模拟程序.[源代码从这里下载] 目录 一.基本的组件和执行流程 二.创建自定义HttpHandler实现对服务调用请求的处理 三.定 ...

  3. 【bzoj1977】[BeiJing2010组队]次小生成树 Tree 最小生成树+权值线段树合并

    题目描述 求一张图的严格次小生成树的边权和,保证存在. 输入 第一行包含两个整数N 和M,表示无向图的点数与边数. 接下来 M行,每行 3个数x y z 表示,点 x 和点y之间有一条边,边的权值为z ...

  4. BZOJ4584 APIO2016赛艇(动态规划+组合数学)

    如果值域不大,容易想到设f[i][j]为第i个学校选了j的方案数,枚举上一个学校是哪个选了啥即可,可以前缀和优化.于是考虑离散化,由于离散化后相同的数可能可以取不同的值,所以枚举第一个和其所选数(离散 ...

  5. 高性能服务器开发之C++定时器

    高性能服务器开发之C++定时器 来源: https://www.cnblogs.com/junye/p/5836552.html 写这篇文章前搜了下网上类似的文章,有很多,所以笔者的这篇文章就不对定时 ...

  6. [洛谷P3743]kotori的设备

    题目大意:ことり有$n$个设备,每个设备每秒共减少$a_i$能量(也就是说每一瞬间都在减少,而不是在一个时刻突然减少),开始前有$b_i$能量,ことり还有一个充电宝,无限能量,每秒共可以提供$p$的能 ...

  7. BZOJ2753 [SCOI2012]滑雪与时间胶囊 【kruskal】

    题目链接 BZOJ2753 题解 完了我连\(kruskal\)裸题都做不出来了.. 题目是求最小树形图,即有向图最小生成树 我们不能直接上\(kruskal\),而要保证先加入前面的点, 所以我们排 ...

  8. 线段树模板 CDOJ1057

    UESTCOJ不知道为什么进不去了哇 跟着叉姐的算法讲堂写的板子 叉姐的思路真的好清晰啊,一定是练习的多并且理解的够深了 希望自己也可以每天进步一点点吧 代码: #include <map> ...

  9. Intelij idea新窗口打开项目设置

    1.idea 打开后 file->setting   2.appearance&behave->system setting->open project in new win ...

  10. 在liberty中通过LTPA设置单点登录

    不要忘了下面的设置,参考: https://www-01.ibm.com/support/knowledgecenter/was_beta_liberty/com.ibm.websphere.wlp. ...