@yanglei0321 写道:
刚接触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的源码啊,想仿照一下,写批量加载的
帖子: 2
参与者: 1