zoukankan      html  css  js  c++  java
  • cocos creator基础-(十三)cc.Loader使用

    1: 掌握cc.loader加载本地资源;
    2: 掌握cc.loader加载远程资源;
    3: 掌握资源释放的机制与autorelease;
    4: 掌握手动释放资源;
     
    cc.Loader
     
    1:有三个默认的Pipeline:
      (1) assetLoader: 主要用于加载资源, 加载asset类型资源,和释放这些资源;
      (2) downloader: 主要用于下载文件, 文本,图像,脚本,声音,字体, 自定义的download;
      (3) loader: 第三个默认的Pipeline,可以加载json, image, plist, fnt, uuid;
    2: 资源分为本地(assets目录下)与远程资源;
    3: 加载异步的;
     
     
    本地资源加载
     
    1: 在代码里面加载资源必须要求资源在assets/resources/文件夹下;
      (1)根据场景的依赖关系来打包我们的资源; 去掉不用的资源
      (2)无法判断在代码里面加载的资源,是哪些?-->所有的resources目录下的资源,都会被打包
      进去,你在代码里面就能加载到它了。
      如果资源不在代码里面加载,一般不要放到resources目录下 ,如果放到了,这个资源不管你有没有用,都会被打包进去;
    2: 资源的url不需要加assets/resources这个部分,路径不需要加这个前缀;
    3:cc.loader.loadRes(url, onComplete回掉函数);
    4: loadResArray([], type类型, progressCallback, completeCallback);
    5: loadResDir (url [type ] [progressCallback ] [completeCallback ]) 加载一个路径下的资源;
        cc.loader.loadResDir( // 加载resources目录下的所有资源
            "/", function(){});
    6: getRes(url, [type]); 获取资源id;
     
    远程资源加载
     
    1: cc.loader.load(url, 结束回掉函数);
    2: cc.loader.load({url: “”, type: “”}, 结束回掉函数);
    3: 远程加载任意类型文件;
     
    资源卸载
    1:每个场景有个自动释放资源
      勾选上这个场景的资源会自动释放,不勾选上这个场景的资源不释放
    2: 代码加载的资源,默认是不会受场景这个选项的影响的,除非设置
      cc.loader.setAutoRelease(url, brealse),在场景自动释放的时候,代码资源也会释放
    3: 手动释放资源
      loadRes/ releaseRes
      load / release
      releaseAsset (资源对象的object);
     
    cc.Class({
        extends: cc.Component,
    
        properties: {
            // foo: {
            //    default: null,      // The default value will be used only when the component attaching
            //                           to a node for the first time
            //    url: cc.Texture2D,  // optional, default is typeof default
            //    serializable: true, // optional, default is true
            //    visible: true,      // optional, default is true
            //    displayName: 'Foo', // optional
            //    readonly: false,    // optional, default is false
            // },
            // ...
            audio: {
                type: cc.AudioSource,
                default: null,
            },
    
            sprite: {
                type: cc.Sprite,
                default: null,
            },
        },
    
        // use this for initialization
        onLoad: function () {
    
        },
    
        start: function() {
            // this.local_load();
            this.remote_load();
        },
    
        remote_load: function() {
            // 加载远程的图片 release 卸载资源
            cc.loader.load("http://127.0.0.1:6080/splash.png", function(err, ret) {
                if(err) {
                    console.log(err);
                    return;
                }
    
                // ret is cc.Texture2D这样对象
                this.sprite.spriteFrame.setTexture(ret);
                this.sprite.node.setContentSize(ret.getContentSize()); // 使用这个图片的大小
                // end 
            }.bind(this));
            // end
    
            // 从服务器加载mp3来进行播放, type,就是url不带类型,我们就使用url + type的模式来制定类型
            cc.loader.load({url: "http://127.0.0.1:6080/bg.mp3", type: "mp3"}, function(err, ret) {
                if (err) {
                    console.log(err);
                    return;
                }
                this.audio.clip = ret;
                this.audio.play();
            }.bind(this));
            // end 
    
            // 从服务器加载json文件
            cc.loader.load({url: "http://127.0.0.1:6080/project.json", type: "json"}, function(err, ret) {
                if (err) {
                    console.log(err);
                    return;
                }
                
                console.log(ret);
            }.bind(this));
            // end 
    
            // 
            cc.loader.load({url: "http://127.0.0.1:6080/test.mydata", type: "mydata"}, function(err, ret) {
                if (err) {
                    console.log(err);
                    return;
                }
                
                console.log(ret);
            }.bind(this));
            // end 
        },
    
        local_load: function() {
            // 本地加载声音
            // 注意:这里不需要后缀名, assets/resources/这个也不需要  releaseRes卸载资源
            cc.loader.loadRes("bg", function(err, ret){
                if(err) {
                    console.log(err);
                    return;
                }
                console.log(ret); // audio clip
                this.audio.clip = ret;
                this.audio.play();
            }.bind(this));
            // end 
    
            // 本地加载图片
            cc.loader.loadRes("img/disk", cc.SpriteFrame, function(err, ret) {
                if (err) {
                    console.log(err);
                    return;
                }
    
                // spriteFrame对象
                // 例如我们的游戏,在进入下一个场景之前,有一个资源加载场景,那么到了新的场景后,我们就能够找到这个加载好的资源
                // cc.loader.getRes();
                this.sprite.spriteFrame = cc.loader.getRes("img/disk", cc.SpriteFrame);
                // end 
            }.bind(this));
            // end 
        },
        // called every frame, uncomment this function to activate update callback
        // update: function (dt) {
    
        // },
    });
  • 相关阅读:
    在webBrowser中取Cookie的方法
    C#遍历DataSet中数据的几种方法总结
    php数组排序函数
    linux top命令详解
    HTTPSQS(HTTP Simple Queue Service)消息队列
    mysql 触发器(trigger) 总结
    HDU4292 Food —— 最大流 + 拆点
    POJ1459 Power Network —— 最大流
    POJ2516 Minimum Cost —— 最小费用最大流
    HDU4280 Island Transport —— 最大流 ISAP算法
  • 原文地址:https://www.cnblogs.com/orxx/p/10447785.html
Copyright © 2011-2022 走看看