概述
原来的cc.Loader
被改造为一个单例cc.loader
,采用了插件机制设计,让loader作更纯粹的事。php
各类资源类型的loader能够在外部注册进来,而不是直接将全部的代码杂揉在cc.Loader
中,更好的方便管理以及用户自定义loader的建立。css
cc.loader
中包含了一些网络资源获取的基本api,例如加载js、加载image等。html
API描述
(注:如下描述中,全路径的意思为 "资源的根路径" + "资源路径", 例如设置图片资源根路径(cc.loader.resPath)为"res",图片资源路径为"a.png", 那么全路径为"res/a.png",非全路径为"a.png"。)html5
resPath
资源的根路径(音频资源除外)。git
audioPath
音频资源的根路径。github
getXMLHttpRequest
获取XMLHttpRequest对象。api
loadJs
加载js文件。数组
-
-
-
-
-
-
cc.loader.loadJs(
"src", [
-
-
-
if(err) return console.log("load failed");
-
-
-
-
-
-
if(err) return console.log("load failed");
-
-
-
cc.loader.loadJs(
"src/a.js", function(err){
-
if(err) return console.log("load failed");
-
-
loadJsWithImg
用法同loadJs
,只是在加载js文件的时候会显示一个loading的图片而已。缓存
loadTxt
加载文本资源。网络
-
-
-
-
-
用法:
-
cc.loader.loadTxt(
"res/a.txt", function(err, data){
-
if(err) return console.log("load failed");
-
-
loadImg
加载图片资源。
-
-
-
option 选项,目前结构如:`{isCrossOrigin : true}`,`isCrossOrigin`默认为`true`(可选)
-
-
-
loadBinary
加载二进制文件(异步)。
-
-
-
-
-
loadBinarySync
加载二进制文件(同步,不推荐使用)。
-
-
-
-
-
getUrl
获取到资源全路径。
-
-
-
-
-
用法:
-
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`属性的对象。
-
-
-
-
-
-
用法:
-
var res = ["res/a.png", "res/a.plist", "audio/b.mp3"];
-
-
name : "the name is testTarget",
-
trigger : function(){...},
-
-
-
-
trigger : testTarget.trigger,
-
triggerTarget : testTarget,
-
-
-
-
cc.loader.load(res, option,
function(err){
-
if(err) return console.log("load failed");
-
-
-
-
-
cc.loader.load(res,
function(err){
-
if(err) return console.log("load failed");
-
-
-
-
option.cb = testTarget.cb;
-
cc.loader.load(res, option);
-
-
-
loadAliases
加载plist配置文件从而得到别名。
-
-
-
-
<?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">
-
-
-
-
-
-
-
-
-
-
-
<string>res/Images/grossini.png</string>
-
-
-
-
-
-
-
-
-
cc.loader.loadAliases("res/lookup-html5.plist", function(){
-
var sprite = cc.Sprite.create("grossini.bmp");
-
-
sprite.x = winSize.width/2;
-
sprite.y = winSize.height/2;
-
-
register
注册loader。
-
-
extNames 后缀名(String数组或者String)
-
-
-
方法将接受四个个参数:
realUrl, url, res, cb,分别表示资源全路径、原来的路径、res对象(就是cc.loader.load方法的资源列表的项),回调函数。
-
可能包含一个名为"
getBasePath"的方法,该方法返回该类型资源的根路径,不设置该方法默认为cc.loader.resPath。
-
-
用法:
-
-
load : function(realUrl, url, res, cb){
-
cc.loader.loadTxt(realUrl, cb);
-
-
-
cc.loader.register([
"txt", "xml", "tmx", "tsx"], cc.txtLoader);
getRes
获取资源缓存数据。
-
-
-
-
用法:
var img = cc.loader.getRes("a.png");
release
释放资源缓存数据。
-
-
-
-
用法:
cc.loader.release("a.png");
releaseAlll
释放全部的资源缓存数据
-
-
-
用法:
cc.loader.releaseAll();
注册loader插件
引擎自带loader写在CCLoaders.js中。实现方式也很简单,相信看下源码就懂了,这里就很少说了。
资源配置格式
此次cc.loader
的改造,也废除了v2版本中一直让人诟病的资源列表的配置。
v2:
-
-
-
{fontName:
"Marker Felt",src:[{src:"res/cocosgui/Marker Felt.ttf",type:"truetype"}]},
-
-
fontName:
"Schwarzwald Regular",
-
-
{src:
"res/fonts/Schwarzwald_Regular.eot", type:"embedded-opentype"},
-
{src:
"res/fonts/Schwarzwald Regular.ttf",type:"truetype"}
-
-
-
v3:
-
-
-
"res/cocosgui/Marker Felt.ttf",
-
-
-
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中是不支持的。
转载:https://blog.csdn.net/qinning199/article/details/40588137