怎么使用自动图集中的资源

cc.loader.loadRes(“test assets/sheep”, cc.SpriteAtlas, function (err, atlas) {
var frame = atlas.getSpriteFrame(‘sheep_down_0’);
sprite.spriteFrame = frame;
});

这个方法只能得到resources中的图集资源,自动打包的图集,要动态使用,怎么使用?

4赞

难道要把可能加载的图片都全部拖到场景里先隐藏,等要用的时候再显示出来???@所有人

你要动态加载的东西,就需要放到 resources 下才能动态加载

把自动图集中要用的图先全部拖进一个数组,服了。

把你要动态加载的资源全部放进Resources,然后就和普通的动态加载一样了啊

是要用自动图集中的,resoures那种方法不方便。

cc.loader.load好像可以使用绝对路径,你论坛上搜索看看

自动图集啊,兄弟,你都没搞明白我在说什么。

var imgUrl = cc.url.raw(‘textures/card/img_num_black_02.png’);
var texture = cc.textureCache.addImage(imgUrl);

这样就可以了。

var imgUrl = cc.url.raw(‘textures/card/img_num_black_02.png’);
var texture = cc.textureCache.addImage(imgUrl);

这样加载自动图集中的资源,在原生设备上不行。

我这个不是动态加载,自动图集连plist文件都没有啊。

不是动态加载,是加载一次后,取图集里面的图片。

动态使用 就是要通过 动态加载 来使用啊

为什么不方便,自动图集也支持 resources 中的文件

你可以这样组织结构

- resources
  - pictures-1
    - AutoAtlas.pc
      - 1.png
      - 2.png

然后可以通过类似这样的代码来获取

cc.loader.loadResDir('pictures-1/', cc.SpriteFrame, function (err, spriteFrames) {
    // handle spriteFrames
});

这个方法我试了是可以了,但问题来了spriteFrames是一个数组,有没有办法根据名字去获取,而不是根本下标。

用这个去读取单个会可行吗?

删选一下 spriteFrame 的名字就可以了,这个也没几行代码啦

可行 asdfg

我用这种自动图集加载的方式实现测试了一次没有问题,但总觉得还没有原来搞个组件弄个数组,把所有图片都拖上去方便,因为这样的异步加载,我不得不写自己的onLoad,引擎的onLoad只能代表与场景相关的资源都加载完了,并不能代表我自己的资源加载完了,如果我把可能用到的图片都拖到一个组件的数组,引擎会帮我加载完再调用onLoad.

自动图集是解决渲染效率的,不是帮你管理图片的。你要是喜欢图片打包到一起,那你可以自己打包。

其实不只是解决渲染效率,比如热更新下一个大文件比下几百个小文件肯定会要效率高些,除了热更新,加载效率加一张整图也会比加载多个散图会高。