美文网首页
发布Laya项目时自动建立动画Ani与atlas的关联(JSON

发布Laya项目时自动建立动画Ani与atlas的关联(JSON

作者: ritei | 来源:发表于2018-09-07 19:20 被阅读0次

每次我们加载ani文件需先加载对应的图集文件,由于项目比较大资源较多,所以首先想到的是建立一个ani到图集的对应文件。
这种关系的建立有两种方法{
1)建表导出JSON
2)用工具自动生成对应表。
显然第二种比较适合实际项目,研究了一下Laya编辑器的实现,其实Laya编辑器就像是一个chrome浏览器,编辑器里面的多数功能都是用JS实现的。


捕获.PNG

首先把Laya切换到编辑模式,点开发人员工具,熟悉的chrome调试界面出来了。


捕获2.PNG 捕获3.PNG

一步步跟找到打包的入口函数
需要修改代码的文件路径是:\LayaAirIDE_beta\resources\app\out\vs\layaEditor\h5\layabuilder.max.js
代码的主要功能是:
先收集所有ani文件的图集。

    /**收集Ani引用的图集 by ritei*/
    CodeManager.collectAniAtlas=function(obj,atlasDic){
        if(obj.animations){
            var a=0,n=0,k=0,s=0,alen=0,nlen=0,slen=0;
            var animations=obj.animations;
            alen=animations.length;
            for(a=0;a<alen;a++){
                var nodes = animations[a].nodes;
                if(nodes&&nodes.length>0){
                    nlen = nodes.length;
                    for(n=0;n<nlen;n++){
                        var keyframes = nodes[n].keyframes;
                        if (keyframes){
                            var skin = keyframes.skin;
                            if (skin&&skin.length>0){
                                slen = skin.length;
                                for(s=0;s<slen;s++){
                                    var skinStr = skin[s].value;
                                    var path = FileTools.getFileDir(skinStr);
                                    atlasDic[path] = 1;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

最后输出到json文件

        // 输出动画图集映射文件 by ritei
        var tarPath;
        tarPath = FileManager.getPath(FileManager.getWorkPath(ProjectSetting.asynResExportPath),"atlasMap.json");
        FileManager.createJSONFile(tarPath,aniAtlasDic);

回到编辑器
我的资源目录是这样的:


捕获5.PNG

点发布,会在bin目录下生成atlasMap.json文件
里面的内容:


捕获4.PNG

相关文章

网友评论

      本文标题:发布Laya项目时自动建立动画Ani与atlas的关联(JSON

      本文链接:https://www.haomeiwen.com/subject/hmqhgftx.html