自己要操作100多个fla相同格式的fla文件,把动作帧MC时间轴上的动作抽取到场景时间轴里面去,做了一个jsfl脚本的转化操作。PS:可使用Komodo Edit 这样一个软件进行编写
fl.outputPanel.clear();
var folderURI = fl.browseForFolderURL("选择模型文件夹,稍后进行批量转化");
var folderContents = FLfile.listFolder(folderURI);
var saveDir = "file:///D:/saveFolder/"; //转化后保存目录
if( FLfile.exists(saveDir)==false )
{
FLfile.createFolder(saveDir);
}
try
{
var fileName ;
for each(var o in folderContents)
{
if( o.indexOf('fla')>-1 )
{
fileName = folderURI+'/'+o;
transferFla(fileName);
}
//fl.trace(fileName);
}
}
catch(e)
{
alert("部分fla文件有异常"+e);
}
alert("转换后文件已保持到'"+saveDir+"'目录")
//转化函数
function transferFla(fileUrl)
{
var doc = fl.openDocument(fileUrl);//fl.getDocumentDOM();
fl.outputPanel.trace(doc.name);
var item = doc.library[0];//.timelines[0].layers[0].frames[0].elements[0].libraryItem;
//查找库中的Soilder MC
for each(var o in item)
{
if( o.name == 'Soilder' )
{
item = o;
break;
}
}
var ddoc = fl.createDocument("timeline");
ddoc.timelines[0].layers[0].locker = false;//设为不禁用
var len = 1;
var _actionCount = item.timeline.layers[1].frames.length;//动作数
for(var j=0;j<_actionCount-1;j++)
{
var _actionFrame = item.timeline.layers[1].frames[j];//动作
var _actionTimeline = _actionFrame.elements[0].libraryItem.timeline;//动作MC的时间轴
var _imgArr = _actionFrame.elements[0].libraryItem.timeline.layers[1].frames//动作MC的帧
_actionTimeline.currentLayer = 1; //当前活动层
for(var i=0;i<_imgArr.length;i++ )
{
if( _imgArr[i].startFrame == i )
{
_actionTimeline.copyFrames(i); //复制关键帧
ddoc.timelines[0].pasteFrames(len);//逐个粘贴帧
len ++;
}
}
}
ddoc.timelines[0].removeFrames(0);
fl.saveDocument(ddoc,saveDir+doc.name);
fl.closeDocument(doc);
fl.closeDocument(ddoc);
}