JSFL 批量转化fla脚本文件

本文介绍了一种使用JavaScript for Flash (JSFL) 脚本和Komodo Edit软件批量处理FLA文件的方法,通过编写脚本将动作帧MC时间轴的动作抽取并粘贴到场景时间轴中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值