2010-04-24 75 views
6

我有一个闪存.fla编译为一个.swc引用图像,但现在我需要加载所有这些图像外部,我没有原始资产。从库中批量导出图像?

我知道我可以一个一个地导出它们,但是我有几百个文件,并且想要找到一个更简单的方法。

任何帮助都会很棒。

+0

我很困惑。你没有原始资产? – 2010-09-21 11:23:07

回答

6

你可以使用这个脚本。它仅从您的库中导出位图

//created by Heitara 
var folderURI = fl.browseForFolderURL('Select folder where all images should be exported as *.PNG'); 

var doc = fl.getDocumentDOM(); 
var newDoc = fl.createDocument(); 
//fl.outputPanel.trace("Init"); 

if(doc && newDoc) 
{ 
    fl.outputPanel.trace("Start"); 
    var library = doc.library; 
    var allLibItems = library.items; 
    var item; 
    var c = 0; 
    var selectedItemOnStage; 
    var selectionArray; 
    var itemName; 

    for (var i = 0; i<allLibItems.length; ++i) 
    { 
     item = allLibItems[i];//only images will be processed 
     if(item.itemType == "bitmap") //|| item.itemType == "graphic") 
     { 
      // attach image 
      newDoc.addItem({x:0.0, y:0.0}, item); 

      //postition all items on (0,0) 
      var image = newDoc.getTimeline().layers[0].frames[0].elements[0]; 
      if(image) 
      { 

       var hpx = image.hPixels; 
       var vpx = image.vPixels; 

       newDoc.width = hpx; 
       newDoc.height = vpx; 
       // we need to reposition the image, otherwise it will be centered 
       image.x = 0; 

       image.y = 0; 
      } 

      itemName = item.name.split('.')[0]; 
      //export as png 
      newDoc.exportPNG(folderURI + "/"+itemName +".png",true,true); 
      //select all 
      newDoc.selectAll(); 
      //remove selection 
      newDoc.deleteSelection(); 
      //deselect everything 
      newDoc.selectNone(); 
      //output.trace("[END]"); 

     } 

    } 
} 

//close the new document withut saving it 
fl.closeDocument(newDoc, false); 

只需将其保存为.jsfl文件并从闪存中打开它。 您还应该打开要从中导出所有图像的.fla文件。

最佳, 埃米尔

附:其他解决方案是将.fla重命名为.zip(.rar)文件并提取所有资产。这仅适用于使用最新版本的Flash CS5或CS5 +创建的.fla文件。

+0

这仍然适用于CS6。只有改变我必须做的是清理输出路径不包括斜线 - 在导出PNG之前转换itemName,就像这样做:'itemName.replace(/ \ // g,' - ')。replace (//g,' - ')' – 2015-09-30 05:38:08