我假设您要导出单个剪辑,但要控制多重(4 个动画)而不是单个剪辑。如果是这种情况,我在几年前写了一些 JSFL 脚本(当时 CS6 还没有导出 spritesheets),它们将 .fla 文档的主时间线导出为图像序列,但在文件名。这使得与TexturePacker集成变得容易。你可以在这里看到它的视频。
这是一个 JSFL 片段,它将导出一个帧序列,其中包含基于帧标签生成的名称,这应该可以在 TexturePacker 中轻松管理:
var d = (FLfile.getPlatform() == 'macos') ? '/' : '\\'; //delimiter
var doc = fl.getDocumentDOM(); //document
var tl = doc.getTimeline();tl.setSelectedLayers(0,true); //timeline
var cl = tl.layers[0]; //current layer
var numFrames = cl.frameCount;
var className = prompt("Name for your sequence", toClassName(doc.name.substr(0,doc.name.length-4)));
className = className.split('.')[0];//just in case the user adds .as
className = toClassName(className);//remove non alphabet chars
var docPath = doc.pathURI.substr(0,doc.pathURI.length - doc.name.length);
var exportPath = docPath+className+'_export'+d;
if(!FLfile.exists(exportPath)) FLfile.createFolder(exportPath);
fl.outputPanel.clear();
for(i = 0 ; i < numFrames; i++) {
if(cl.frames[i].name != ''){//if frame is labelled
tl.setSelectedFrames(i,i,true);
doc.exportPNG(exportPath+cl.frames[i].name+lpad(''+i,4)+'.png',true,true);
}
}
fl.trace("export complete!");
function lpad(number, length){
var result = '' + number;
while (result.length < length) result = '0' + result;
return result;
}
function toClassName(input){
return input.replace(/[^a-zA-Z]/g, "");
}
另外,我建议看看Dynamic-Texture-Atlas-Generator、Fruitfly等生成器工具。