您的位置:首页 > 移动开发 > Cocos引擎

cocos creator学习9——cc.loader使用

2018-03-21 14:12 369 查看

cc.loader

存在3个默认Pipeline:

管道名功能
assetLoader用于加载资源,默认为第一个管道,用于识别资源类型,并确定如何下载它,还有释放资源
downloader用于下载资源,默认为第二个管道, 它用于下载具有多个处理程序的文件:纯文本,图像,脚本,音频,字体,uuid。 可以使用addDownloadHandlers添加自己的下载功能(自定义下载)
loader默认情况下为第三个管道。 它用于加载JSON,图像,plist,fnt,uuid类资源。 您可以使用addLoadHandlers添加您自己的下载功能
资源分为本地资源(assets目录下)与远程资源两个种类

加载都是一个异步的过程


在cocos creator中使用代码加载资源必须要求资源在
assets/resources/
文件夹下



loader.loadRes()使用

loadRes()
有4个参数

参数列表对应功能
url资源文件的url地址
type如果写上这个参数就会只加载该类型的资源
progressCallback(completedCount,totalCount,item)当进程更改时调用的回调函数
completeCallback(err,ret)当资源加载时调用的回调函数


代码实现本地加载资源

start () {
this.local_load();//调用加载函数
},

local_load:function(){
cc.loader.loadRes("Super",function(err,ret){
if(err){
cc.log(err);
return;
}
else{
cc.log(ret);
this.Audio.clip = ret;
this.Audio.play();
cc.log("正在播放?"+this.Audio.isPlaying); //检测是否在播放
}
}.bind(this));
cc.loader.loadRes("block",cc.SpriteFrame,function(err,ret){
if(err){
cc.log(err);
return;
}
cc.log("ret = "+ret);
this.SpriteRes.spriteFrame = ret;
//等效于this.SpriteRes.spriteFrame = cc.load.getRes("block",cc.SpriteFrame);
//不过getRes也可以在其他场景继续使用
}.bind(this));
},


运行结果



打印出true结果就代表声音正在播放了,并且图片加载进去了

远程加载

如果需要从远程的服务器中获取资源,此时需要
cc.load.load(url,callback)
与本地加载资源API类似

只不过有一点不同,我们可以传入一个表{url:xxxx,type:xxx(如:MP3,png)},creator就可以识别出文件类型

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));
});


资源的释放

场景中的属性检查器上有一个自动释放资源,但是它无法清理代码加载的资源

如果需要自动清理,可以使用
setAutoRelease(url,autoRelease)
,强制在切换场景时保留或者释放指定资源

手动释放资源

加载资源类型对应释放
loadRes()
本地加载资源
使用
releaseRes(url,type)
释放资源
load()
远程加载
使用
release(asset)
释放资源
releaseAsset(asset)
通过资源对象自身来释放资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos-creator