JSFL替换库图像的图像

时间:2013-11-18 14:49:44

标签: actionscript-3 flash jsfl

我试图使用JSFL创建一个脚本,但我有以下问题......

要了解我想要做什么,首先我使用脚本导出库中的所有图像,因为我需要对所有PNG文件进行处理。

现在我想将图像重新插入库中。

如果我创建了一个新项目,我将丢失所有引用,这没有用,我有重复的项目。

我需要做的是重新导入每个项目的图像。 我的意思是,当我右键点击库项目> properties->导入...时,我也是这样做的。

我试图使用此脚本,但它不起作用。有人可以帮帮我吗?

var folderURI = fl.browseForFolderURL('Select folder where all images should be exported as *.PNG');
var doc = fl.getDocumentDOM();

if(doc)
{
    fl.outputPanel.trace("Start");
    var library = doc.library;
    var allLibItems = library.items;
    var item;
    var itemName;

    for (var i = 0; i<allLibItems.length; ++i) 
    {
        item = allLibItems[i];//only images will be processed
        if(item.itemType == "bitmap")
        {
            itemName = item.name.slice(item.name.lastIndexOf("/")+1,item.name.lastIndexOf("."));
            //Find proccesed image on the directory selected before
            //and replace the sourceFilePath (I think this is what I need to use a new image but is not working)
            item.sourceFilePath = folderURI + "/" + itemName +".png"

            //This returns 'false'
            fl.outputPanel.trace(library.updateItem(item.name));
            //item.sourceFilePath has the old value, I don't understand why it was not changed
            fl.outputPanel.trace(folderURI + "/" + itemName +".png" + " = " + item.sourceFilePath);
        }

    }
}

2 个答案:

答案 0 :(得分:0)

最后,我解压缩了FLA文件,它就像一个拉链,里面有所有图像,所以很容易替换它们。

我首先遇到的问题是图像没有改变,因为在Flash中你可以选择在创建swf时压缩图像,这就是为什么我没有看到最终结果的任何变化。 (右键单击库中的图像 - &gt;属性 - &gt;压缩)

我使用JSFL迭代所有图像(如上例所示)并设置压缩:“无损”而不是“Photo(JPG)”。

显然这对我来说只是一个很好的解决方案,因为我使用外部工具以非常高的分辨率和较小的尺寸压缩图像。

您可以使用JSFL迭代所有图像并将压缩:“Photo(JPG)”设置为所有图像,具有您想要的质量,但结果可能会有所不同。

此致

答案 1 :(得分:0)

试试这个

  doc.importFile(currentFileURI, true, false, false);
  doc.library.selectItem(currentFileName);
  doc.library.moveToFolder(libraryPath, currentFileName, true);

但如果项目存在,则FLASH显示警告对话框