zoukankan      html  css  js  c++  java
  • 【cocos2d-js官方文档】九、cc.loader

    概述

    原来的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文件。

    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

  • 相关阅读:
    java集合源码
    数据库表链接的几种方式
    面试题(RabbitMQ)
    常见面试题(Redis)
    某奥笔试题
    Servlet
    1——Django的基础及环境搭建
    6.13---example
    6.12---知道参数的重要性------插入数据-删除数据-修改数据注意Map
    6.12---前提两个对象的成员必须一致,才能将有数据的对象将数据传给反射获取的对象conver(有数据对象,目标对象)
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/11929587.html
Copyright © 2011-2022 走看看