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) {

    // },
});

原文地址:https://www.cnblogs.com/orxx/p/10447785.html

时间: 2024-08-29 16:40:59

cocos creator基础-(十三)cc.Loader使用的相关文章

cocos creator基础-(六)cc.Sprite使用

1: 了解cc.Sprite的使用;2: 了解cc.Sprite的大小模式;3: 学会使用九宫格,使用九宫格节省美术资源;4: 学会个性化的时间精度条的使用;5: 代码里面来更换图片; cc.Sprite 1: 游戏中显示一个图片,通常我们把这个叫做”精灵” sprite2: cocos creator如果需要显示一个图片,那么需要在节点上挂一个精灵组件,为这个组件指定要显示的图片(SpriteFrame)3: 显示一个图片的步骤: (1) 创建一个节点; (2) 添加一个组件; (3) 要显示

游戏开发-cocos creator踩坑-cc.loader.loadRes

cc.loader.loadRes("sounds/music/home_scene_bg", cc.AudioClip, function(err, clip) { sound_manager.play_music(clip, true); }); 资源的url不需要写根目录resources,也不需要加文件类型后缀 原文地址:https://www.cnblogs.com/orxx/p/11007958.html

cocos creator基础-(二十四)cc.Director与资源加载策略

1: 了解creator场景切换; 2: 了解director基本的一些接口; 3: 理解资源加载的策略; cc.Director对象 1:游戏里面控制管理整个游戏全局对象,包括了场景切换等,为cc.Director对象; 2:导演对象全局只有一个cc.director,大写的为类, 小写的cc.director为全局的导演对象; 3: cc.director来获取导演对象实例; 4: 游戏中各种管理对象都可以通过cc.director获取,比如物理引擎管理,Action管理, 碰撞检测管理等;

cocos creator基础-(二十三)android环境搭建、h5/android 打包发布

1: 了解h5打包发布,要注意的事项; 2: 完成android环境配置与creator 项目android打包; 3: 使用 eclips打开项目或android-studio; h5打包发布 1:引擎模块裁剪,减少引擎体积; 2: resources目录的特性,减少setting.js体积; 3: 订制启动的logo,与样式; 4: resources特性 a:creator里面会根据场景的依赖来打包的我们的资源, 资源没有用的,将不会被打包进来; b:有时候我们需要代码加载我们的资源, c

cocos creator 基础1,小白自学日常。

<!--作为一个初学者,难免有遗漏和不妥之处,还请不吝赐教,不胜感激.错则改之,无则加勉. 接触ccc的第一天.我首先去看了下Cocos Creator 用户手册(http://docs.cocos.com/creator/manual/zh/),然后跟着做了一个摘星星的小游戏. 第一天就是简单的复制粘贴,简单了解了一下操作界面和运行原理.第二天我找了下前辈们的教程,找了一个基础加实战的教程(http://forum.cocos.com/t/topic/40659),这里对作者表示感谢. 作为小

cocos creator基础-cc.Node(三)坐标空间转换

cc.Vec2 1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二维向量(这个2.0被废弃了,用cc.v2替代) 2: cc.pSub: 向量相减 cc.pSub(v1, v2) 被废弃,用v1.sub(v2)替代 3: cc.pAdd: 向量相加; cc. cc.pAdd(v1, v2) 被废弃,用v1.add(v2)替代 4: cc.pLength: 向量长度; cc.pLength(dir)被废

cocos creator基础-(十六)自定义的帧动画播放组件(需要优化)

1: 掌握帧动画的原理; 2: 完成帧动画组件的编写; 3: 代码中使用帧动画组件; 通过拖拽图片进行播放,比引擎的制作方式方便,但动画不是很灵活 帧动画播放组件 1: creator播放帧动画需要通过动画编辑器去制作; 2: 为了方便控制和使用加入帧动画代码播放组件; 3: 属性设置: sprite_frames: 帧动画所用到的所有的帧; duration: 每帧的时间间隔; loop: 是否循环播放; play_onload: 是否加载组件的时候播放; 4: 接口设置: play_once

cocos creator基础-(二十)物理引擎碰撞检测

1: 理解物体类型和分类,配置碰撞矩阵;2: 编写碰撞响应函数,监听碰撞事件;3: 学会了解Sensor来做触发器,只触发碰撞不改变运动; 物体类型与碰撞矩阵 1: 添加物体类型: Add Layer, 每个类型对应一个名字group与groupIndex2: 创建物体的时候要选择一个类型;3: 配置碰撞矩阵,决定哪些物体类型碰撞; 碰撞事件监听 1: 刚体组件开启碰撞监听;2: 当有碰撞发生的时候,遍历刚体所在的节点所挂的所有的组件,看组件是否实现了碰撞检测函数,如果是,那么调用;3: 在需要

cocos creator基础-(二十五)FileUtils本地文件读写

1: 掌握jsb.fileUtils的基本使用; FileUtils API   CCFileUtils.h 1:jsb是javascript bind的代表,整个C/C++ 导出的绑定都在这个jsb里面,jsb 支持native,不支持h5(浏览器上无法运行jsb is not defined ); 2: FileUtils是本地文件读写的一个工具类,全局只有一个实例; 3: jsb.fileUtils来获取文件读写工具类的实例; 4: jsb.fileUtils.isDirectoryExi