每次我们加载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
网友评论