Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 91564

关于图集atlas的使用

$
0
0

@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

阅读整个主题


Viewing all articles
Browse latest Browse all 91564

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>