creator小功能----谈谈资源(图片、声音、文件)的加载

资源加载是经常需要用到的,下面说说各种资源加载的方式:

本地资源加载,使用cc.loader.loadRes方式;

本地加载声音

//本地加载声音:这里不需要后缀名, assets/resources/这个也不需要
        cc.loader.loadRes("bg", function(err, res){
            if(err){
                console.log(err);
                return;
            }

            console.log(res);
            this.audio.clip = res;
            this.audio.play();
        }.bind(this));

加载本地图片

        //加载本地图片
        cc.loader.loadRes("disk", cc.SpriteFrame, function(err, res){
            if(err){
                console.log(err);
                return;
            }

            //spriteFrame对象: 
            // 例如我们的游戏,在进入下一个场景之前,有一个资源加载场景,那么到了新的场景后,我们就能够找到这个加载好的资源
            // cc.loader.getRes();
            this.sprite.spriteFrame = cc.loader.getRes("disk", cc.SpriteFrame);


        }.bind(this));

远程资源加载,使用cc.loader.load方式;

加载远程的图片

//加载远程的图片
        cc.loader.load("HTTP://127.0.0.1/splash.png", function(err, res){
            if(err){
                console.log(err);
                return;
            }

            //res是cc.Texture2D这样对象
            this.sprite.spriteFrame.setTexture(res);
            this.sprite.spriteFrame.setContentSize(res.getContentSize());

        }.bind(this));

 

从服务器加载mp3来进行播放

        //从服务器加载mp3来进行播放, type,就是url不带类型,我们就使用url + type的模式来制定类型
        cc.loader.load({url: "HTTP://127.0.0.1/bg.mp3", type: "mp3"}, function(err, res){
            if(err){
                console.log(err);
                return;
            }

            this.audio.clip = res;
            this.audio.play();
        }.bind(this));

 

从服务器加载json文件

 // 从服务器加载json文件
        cc.loader.load({url: "HTTP://127.0.0.1/project.json", type: "json"}, function(err, res){
            if(err){
                console.log(err);
                return;
            }

            console.log(res);
        }.bind(this));

 

从服务器加载自定义格式文件

// 从服务器加载自定义格式文件
        cc.loader.load({url: "HTTP://127.0.0.1/test.file", type: "file"}, function(err, res){
            if(err){
                console.log(err);
                return;
            }

            console.log(res);
        }.bind(this));

cc.loader.load的使用介绍:

cc.loader.load('a.png', function (err, tex) {
    cc.log('Result should be a texture: ' + (tex instanceof cc.Texture2D));
});

cc.loader.load('http://example.com/a.png', function (err, tex) {
    cc.log('Should load a texture from external url: ' + (tex instanceof cc.Texture2D));
});

cc.loader.load({url: 'http://example.com/getImageREST?file=a.png', type: 'png'}, function (err, tex) {
    cc.log('Should load a texture from RESTful API by specify the type: ' + (tex instanceof cc.Texture2D));
});

cc.loader.load(['a.png', 'b.json'], function (errors, results) {
    if (errors) {
        for (var i = 0; i < errors.length; i++) {
            cc.log('Error url [' + errors[i] + ']: ' + results.getError(errors[i]));
        }
    }
    var aTex = results.getContent('a.png');
    var bJsonObj = results.getContent('b.json');
});

cc.loader.loadRes的使用介绍:

// load the prefab (project/assets/resources/misc/character/cocos) from resources folder
cc.loader.loadRes('misc/character/cocos', function (err, prefab) {
    if (err) {
        cc.error(err.message || err);
        return;
    }
    cc.log('Result should be a prefab: ' + (prefab instanceof cc.Prefab));
});

// load the sprite frame of (project/assets/resources/imgs/cocos.png) from resources folder
cc.loader.loadRes('imgs/cocos', cc.SpriteFrame, function (err, spriteFrame) {
    if (err) {
        cc.error(err.message || err);
        return;
    }
    cc.log('Result should be a sprite frame: ' + (spriteFrame instanceof cc.SpriteFrame));
});

loadResDir的使用介绍:

// load the texture (resources/imgs/cocos.png) and the corresponding sprite frame
cc.loader.loadResDir('imgs/cocos', function (err, assets) {
    if (err) {
        cc.error(err);
        return;
    }
    var texture = assets[0];
    var spriteFrame = assets[1];
});

// load all textures in "resources/imgs/"
cc.loader.loadResDir('imgs', cc.Texture2D, function (err, textures) {
    var texture1 = textures[0];
    var texture2 = textures[1];
});

// load all JSONs in "resources/data/"
cc.loader.loadResDir('data', function (err, objects, urls) {
    var data = objects[0];
    var url = urls[0];
});

getRes与getDependsRecursively

// Release all dependencies of a loaded prefab
var deps = cc.loader.getDependsRecursively(prefab);
cc.loader.release(deps);
// Retrieve all dependent textures
var deps = cc.loader.getDependsRecursively('prefabs/sample');
var textures = [];
for (var i = 0; i < deps.length; ++i) {
    var item = cc.loader.getRes(deps[i]);
    if (item instanceof cc.Texture2D) {
        textures.push(item);
    }
}
发布了265 篇原创文章 · 获赞 20 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/ccnu027cs/article/details/104608622
今日推荐