【问题标题】:JSFL Replace image for library imageJSFL 替换库图像的图像
【发布时间】:2013-12-01 18:33:09
【问题描述】:

我正在尝试使用 JSFL 编写脚本,但我遇到了以下问题...

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

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

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

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

我试图使用这个脚本,但它不起作用。任何人都可以帮助我吗?

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);
        }

    }
}

【问题讨论】:

  • try item.setItemProperty('sourceFilePath',YOUR NEW URI); 新的 URI 必须是正确的 Uri,所以必须以 file:/// 开头

标签: actionscript-3 flash jsfl


【解决方案1】:

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

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

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

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

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

问候

【讨论】:

    【解决方案2】:

    试试这个

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

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

    【讨论】:

      猜你喜欢
      • 2014-06-09
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2016-09-24
      相关资源
      最近更新 更多