JSFL 批量转化fla脚本文件

自己要操作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);
}

你可能感兴趣的:(flash)