概述
原來的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