Cocos Creator 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));
});
要注意其中的function(err, xxxx) 是一个加载资源完成时的回调函数。对于该函数官方的说明如下:
completeCallback Function Callback invoked when the resource loaded.
error Error The error info or null if loaded successfully.
resource Object The loaded resource if it can be found otherwise returns null.
注意:
1.资源要作为预制体放到assets/resources文件夹下(自行创建);预制资源的创建,在场景中编辑好节点后,直接将节点从 层级管理器 拖到 资源管理器(resources文件夹)中:
2.要在completeCallback函数内部使用外层的this,直接在内部使用this是不行的。可以如下操作:
onLoad(){
var self = this;
cc.loader.loadRes("player", function (err, prefab){
var newNode = cc.instantiate(prefab);
//保存到self中以便外部需要。
self.node.addChild(newNode);
});
}
3.要在资源加载完成,即调用完completeCallback函数后,才能在其他地方使用刚加载的资源。
更多推荐



所有评论(0)