cc.loader.loadRes(“test assets/sheep”, cc.SpriteAtlas, function (err, atlas) {
var frame = atlas.getSpriteFrame(‘sheep_down_0’);
sprite.spriteFrame = frame;
});
这个方法只能得到resources中的图集资源,自动打包的图集,要动态使用,怎么使用?
cc.loader.loadRes(“test assets/sheep”, cc.SpriteAtlas, function (err, atlas) {
var frame = atlas.getSpriteFrame(‘sheep_down_0’);
sprite.spriteFrame = frame;
});
这个方法只能得到resources中的图集资源,自动打包的图集,要动态使用,怎么使用?
难道要把可能加载的图片都全部拖到场景里先隐藏,等要用的时候再显示出来???@所有人
你要动态加载的东西,就需要放到 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.
自动图集是解决渲染效率的,不是帮你管理图片的。你要是喜欢图片打包到一起,那你可以自己打包。
其实不只是解决渲染效率,比如热更新下一个大文件比下几百个小文件肯定会要效率高些,除了热更新,加载效率加一张整图也会比加载多个散图会高。