cc.loader 加载资源
动态加载资源要注意两点,一是所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下。resources 需要在 assets 文件夹中手工创建,并且必须位于 assets 的根目录;Creator 提供了 cc.loader.loadRes 这个 API 来专门加载那些位于 resources 目录下的 Asset。和 cc.loader.load 不同的是,loadRes 一次只能加载单个 Asset。调用时,你只要传入相对 resources 的路径即可,并且路径的结尾处不能包含文件扩展名。
// 加载 Prefab
cc.loader.loadRes("test assets/prefab", function (err, prefab) { var newNode = cc.instantiate(prefab);cc.director.getScene().addChild(newNode);});// 加载 AnimationClip
var self = this;cc.loader.loadRes("test assets/anim", function (err, clip) { self.node.getComponent(cc.Animation).addClip(clip, "anim");});// 加载 SpriteAtlas(图集),并且获取其中的一个 SpriteFrame
// 注意 atlas 资源文件(plist)通常会和一个同名的图片文件(png)放在一个目录下, 所以需要在第二个参数指定资源类型cc.loader.loadRes("test assets/sheep", cc.SpriteAtlas, function (err, atlas) { var frame = atlas.getSpriteFrame('sheep_down_0');sprite.spriteFrame = frame;});// 加载 SpriteFrame
var self = this;cc.loader.loadRes("test assets/image", cc.SpriteFrame, function (err, spriteFrame) { self.node.getComponent(cc.Sprite).spriteFrame = spriteFrame;});cc.loader.releaseRes("test assets/image", cc.SpriteFrame);
cc.loader.releaseRes("test assets/anim");// 加载 test assets 目录下所有资源
cc.loader.loadResDir("test assets", function (err, assets) { // ...});// 加载 sheep.plist 图集中的所有 SpriteFrame
cc.loader.loadResDir("test assets/sheep", cc.SpriteFrame, function (err, assets) { // assets 是一个 SpriteFrame 数组,已经包含了图集中的所有 SpriteFrame。// 而 loadRes('test assets/sheep', cc.SpriteAtlas, function (err, atlas) {...}) 获得的则是整个 SpriteAtlas 对象。});// 远程 url 带图片后缀名
var remoteUrl = "http://unknown.org/someres.png";cc.loader.load(remoteUrl, function (err, texture) { // Use texture to create sprite frame});// 远程 url 不带图片后缀名,此时必须指定远程图片文件的类型
remoteUrl = "http://unknown.org/emoji?id=124982374";cc.loader.load({url: remoteUrl, type: 'png'}, function () { // Use texture to create sprite frame});// 用绝对路径加载设备存储内的资源,比如相册
var absolutePath = "/dara/data/some/path/to/image.png"cc.loader.load(absolutePath, function () { // Use texture to create sprite frame});