【cocos2d-js官方文檔】9、cc.loader

概述

原來的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文件。數組

  1.  
    參數:
  2.  
    url 資源路徑(注意,必須是全路徑)
  3.  
    cb 回調函數
  4.  
     
  5.  
    返回值: 無
  • 用法1:
  1.  
    cc.loader.loadJs( "src", [
  2.  
    "a.js", "b.js"
  3.  
    ], function(err){
  4.  
    if(err) return console.log("load failed");
  5.  
    //success
  6.  
    });
  • 用法2:
  1.  
    cc.loader.loadJs([
  2.  
    "src/a.js", "src/b.js"
  3.  
    ], function(err){
  4.  
    if(err) return console.log("load failed");
  5.  
    //success
  6.  
    });
  • 用法3:
  1.  
    cc.loader.loadJs( "src/a.js", function(err){
  2.  
    if(err) return console.log("load failed");
  3.  
    //success
  4.  
    });
loadJsWithImg

用法同loadJs,只是在加載js文件的時候會顯示一個loading的圖片而已。緩存

loadTxt

加載文本資源。網絡

  1.  
    參數:
  2.  
    url 資源路徑(注意,必須是全路徑)
  3.  
    cb 回調函數
  4.  
     
  5.  
    返回值: 無

用法:

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

加載圖片資源。

  1.  
    參數:
  2.  
    url 資源路徑(注意,必須是全路徑)
  3.  
    option 選項,目前結構如:`{isCrossOrigin : true}`,`isCrossOrigin`默認爲`true`(可選)
  4.  
    cb 回調函數
  5.  
     
  6.  
    返回值: Image對象。
loadBinary

加載二進制文件(異步)。

  1.  
    參數:
  2.  
    url 資源路徑(注意,必須是全路徑)
  3.  
    cb 回調函數
  4.  
     
  5.  
    返回值: 二進制數據。
loadBinarySync

加載二進制文件(同步,不推薦使用)。

  1.  
    參數:
  2.  
    url 資源路徑(注意,必須是全路徑)
  3.  
    cb 回調函數
  4.  
     
  5.  
    返回值: 二進制數據。
getUrl

獲取到資源全路徑。

  1.  
    參數:
  2.  
    basePath 資源的根路徑
  3.  
    url 資源路徑
  4.  
     
  5.  
    返回值:資源全路徑。

用法:

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

加載資源的入口api。至關於原來的cc.Loader.preload

  1.  
    參數:
  2.  
    res 資源列表,能夠是一個數組或者一個 string或者一個包含`src`屬性的對象。
  3.  
    option 選項(可選),有如下屬性:
  4.  
    cb 回調函數
  5.  
    cbTarget 回調函數的執行者
  6.  
    trigger 觸發器(函數)
  7.  
    triggerTarget 觸發器的執行者
  8.  
    cb 回調函數(可選)

用法:

  1.  
    var res = ["res/a.png", "res/a.plist", "audio/b.mp3"];
  2.  
    var testTarget = {
  3.  
    name : "the name is testTarget",
  4.  
    trigger : function(){...},
  5.  
    cb : function(err){...}
  6.  
    };
  7.  
    var option = {
  8.  
    trigger : testTarget.trigger,
  9.  
    triggerTarget : testTarget,
  10.  
    cbTarget : testTarget
  11.  
    }
  12.  
    //用法1:
  13.  
    cc.loader.load(res, option, function(err){
  14.  
    if(err) return console.log("load failed");
  15.  
    console.log(this.name);//the name is testTarget
  16.  
    });
  17.  
     
  18.  
    //用法2:
  19.  
    cc.loader.load(res, function(err){
  20.  
    if(err) return console.log("load failed");
  21.  
    });
  22.  
     
  23.  
    //用法3:
  24.  
    option.cb = testTarget.cb;
  25.  
    cc.loader.load(res, option);
  26.  
     
  27.  
    //用法4:
  28.  
    cc.loader.load(res);

loadAliases

加載plist配置文件從而得到別名。

  1.  
    參數:
  2.  
    url 配置文件url
  3.  
    配置文件的格式以下:
  4.  
    <?xml version="1.0" encoding="UTF-8"?>
  5.  
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  6.  
    <plist version="1.0">
  7.  
    <dict>
  8.  
    <key>metadata</key>
  9.  
    <dict>
  10.  
    <key>version</key>
  11.  
    <integer>1</integer>
  12.  
    </dict>
  13.  
    <key>filenames</key>
  14.  
    <dict>
  15.  
    <key>grossini.bmp</key>
  16.  
    <string>res/Images/grossini.png</string>
  17.  
    </dict>
  18.  
    </dict>
  19.  
    </plist>
  20.  
     
  21.  
    cb 回調
  22.  
     
  23.  
    用法:
  24.  
     
  25.  
    cc.loader.loadAliases("res/lookup-html5.plist", function(){
  26.  
    var sprite = cc.Sprite.create("grossini.bmp");
  27.  
    self.addChild( sprite );
  28.  
    sprite.x = winSize.width/2;
  29.  
    sprite.y = winSize.height/2;
  30.  
    });
  31.  
     
register

註冊loader。

  1.  
    參數:
  2.  
    extNames 後綴名(String數組或者String)
  3.  
    loader loader對象,
  4.  
    必須包含一個名爲" load"的方法,
  5.  
    方法將接受四個個參數: realUrl, url, res, cb,分別表示資源全路徑、原來的路徑、res對象(就是cc.loader.load方法的資源列表的項),回調函數。
  6.  
    可能包含一個名爲" getBasePath"的方法,該方法返回該類型資源的根路徑,不設置該方法默認爲cc.loader.resPath。
  7.  
     
  8.  
    返回值:無

用法:

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

獲取資源緩存數據。

  1.  
    參數:
  2.  
    url 資源路徑(非全路徑)
  3.  
     
  4.  
    返回值: 資源數據

用法:

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

釋放資源緩存數據。

  1.  
    參數:
  2.  
    url 資源路徑(非全路徑)
  3.  
     
  4.  
    返回值: 無

用法:

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

釋放全部的資源緩存數據

  1.  
    參數: 無
  2.  
     
  3.  
    返回值: 無

用法:

cc.loader.releaseAll(); 

註冊loader插件

引擎自帶loader寫在CCLoaders.js中。實現方式也很簡單,相信看下源碼就懂了,這裏就很少說了。

資源配置格式

此次cc.loader的改造,也廢除了v2版本中一直讓人詬病的資源列表的配置。

v2:

  1.  
    var resources = [
  2.  
    {src: "res/a.png"},
  3.  
    {fontName: "Marker Felt",src:[{src:"res/cocosgui/Marker Felt.ttf",type:"truetype"}]},
  4.  
    {
  5.  
    fontName: "Schwarzwald Regular",
  6.  
    src:[
  7.  
    {src: "res/fonts/Schwarzwald_Regular.eot", type:"embedded-opentype"},
  8.  
    {src: "res/fonts/Schwarzwald Regular.ttf",type:"truetype"}
  9.  
    ]
  10.  
    }
  11.  
    ]

v3:

  1.  
    var resources = [
  2.  
    "res/a.png",
  3.  
    "res/cocosgui/Marker Felt.ttf",
  4.  
    {
  5.  
    type:"font",
  6.  
    name: "Schwarzwald Regular",
  7.  
    srcs:[ "res/fonts/Schwarzwald_Regular.eot", "res/fonts/Schwarzwald Regular.ttf"]
  8.  
    }
  9.  
    ]

在v3中,一般狀況下只要配路徑就行,這樣簡化了配置,同時減小了對象的頻繁建立。 若是有特殊需求,例如font,就使用{type:"resType", name:"resName"}的數據結構自定義本身的資源加載配置方案。 type字段指定註冊的loader插件,name加上"."再加上type來做爲緩存資源的key值。

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

 

轉載:https://blog.csdn.net/qinning199/article/details/40588137

相關文章
相關標籤/搜索