刚接触crator不久,原来使用过c++版本的cocos2d-x,也用过cocos code ide,习惯了旧的方法,想仿照spriteframecache的使用方法写一个工具类,实现通过图集内某一张小图的名称获取精灵帧
如下代码:
var loadAtlas = {
spriteFrameArray : [],
load: function() {
},
//导入一个资源
loadAtlasRes: function(atlasUrl, callBack) {
var self = this;
cc.loader.loadRes(atlasUrl, cc.SpriteAtlas, function(err, atlas) {
//精灵帧数组
var resArray = atlas.getSpriteFrames();
for (var i = 0; i < resArray.length; i++) {
var spriteFrame = resArray[i];
self.spriteFrameArray[spriteFrame.name] = spriteFrame;
}
callBack();
});
},
//导入多个资源
loadAtlasResAll: function(atlasUrl, callBack) {
},
//释放一个资源
releaseAtlasRes: function(atlasUrl) {
},
//释放多个资源
releaseAtlasResAll: function(atlasUrl) {
},
//通过名字获取一个精灵帧
getSpriteFrameFromName: function(spriteFrameName) {
return this.spriteFrameArray[spriteFrameName];
}
};
loadAtlas.load();
module.exports = loadAtlas;
另一个组件内:
func: function() {
var self = this;
var loadAtlas = require("loadAtlas");
loadAtlas.loadAtlasRes("role/sp_all", function() {
self.test();
})
},
test: function() {
var loadAtlas = require("loadAtlas");
var node = new cc.Node();
node.setPosition(50,50);
node.parent = this.node;
var sprite = node.addComponent(cc.Sprite);
sprite.spriteFrame = loadAtlas.getSpriteFrameFromName("enemy1");
}
目前可以这样使用
这样写完可能使用方便了,不过也有问题,如果两个图集内有名称相同的小图有一个会被覆盖,没想到什么好的解决方法,另外不知道哪里能够看到cc.loader.loadResAll的源码啊,想仿照一下,写批量加载的