资源加载是经常需要用到的,下面说说各种资源加载的方式:
本地资源加载,使用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));
});
扫描二维码关注公众号,回复:
9781701 查看本文章
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);
}
}