0

我正在使用 Flash CS6,我需要从 9 种不同尺寸的矢量图形中保存 32 位 PNG。

16
32
36
48
72
114
128
150
480

如何在 JSFL 中为此编写批量导出脚本?

JSFL 文档(PDF)

4

1 回答 1

3

我有一个脚本可以做你想做的事情。您似乎并没有真正尝试编写任何代码或展示任何研究尝试,因此如果您最终使用此脚本,我将不胜感激。

在舞台上选择一个影片剪辑,然后运行此命令。

Andrew Doll - 多尺寸 PNG 导出器

注意:在运行此脚本之前,请使用所需的 PNG 导出设置导出一张 PNG 图像。

fl.getDocumentDOM.exportPNG() 接受 3 个参数。第一个是文件名的字符串。第二个是一个布尔值,指定是使用当前 PNG 发布设置 (true) 还是显示“导出 PNG”对话框 (false)。第三个是一个布尔值,指定是仅导出当前帧(true)还是导出所有帧,每个帧都作为一个单独的 PNG 文件(false)。

由于此脚本将第二个参数设置为 true,因此请确保 PNG 导出设置已设置为 32 位 PNG。

// Multiple Size PNG Exporter
// Copyright © 2014 Andrew Doll
// http://www.andrewdollanimation.com/

/* NOTE:Before running this script export one PNG image using the desired PNG export settings.  fl.getDocumentDOM.exportPNG() accepts 3 
** paramaters. The first is the string for the file name.  The second is a Boolean value that specifies whether to use the current PNG 
** publish settings (true) or to display the Export PNG dialog box (false).  The third is a Boolean value that specifies whether to export 
** only the current frame (true) or to export all frames, with each frame as a separate PNG file (false).  Since this script sets the
** second paramater to true just be sure that the PNG export settings are already set to 32 bit PNG.
*/

// Check to see if there is a file open first.
var dom = fl.getDocumentDOM();
if (dom == null)
{
    alert("Please open a file.");
}
else
{
    var sel = [];
    var exportSizeArray = [];
    var folderURI = "";
    var folderLocation = "";
    var pngFileName = "";
    var URI = "";
    var selWidth;
    var selHeight;
    var sideToUse;
    var scaleAmount;

    function setupExportFolder()
    {
        // Create a folder and file name for the PNG files.
        folderLocation = fl.browseForFolderURL("Select a folder.");
        if(folderLocation != null)
        {
            folderURI = folderLocation + "/PNG Exports";
            FLfile.createFolder(folderURI);
            pngFileName = prompt("What would you like to name the png files?");
        }
    }

    // Check if a movie clip on the stage is selected to export PNG images.
    var selectionCheck = dom.selection;
    if(!selectionCheck || !selectionCheck.length)
    {
        alert("Please select a movie clip on the stage.");
    }
    else
    {
        // Set up export sizes in this array.
        exportSizeArray = [16, 32, 64, 128, 256, 512, 1024];

        // Setup export folder
        setupExportFolder();

        if(folderLocation != null && pngFileName != null)
        {
            // Copy the selected artwork from the stage.
            sel = dom.selection[0];
            dom.clipCopy();

            // Calculate the amount to scale the symbol by based on the longest side.
            function calculateScaleAmount(selWidth, selHeight)
            {
                if(selWidth >= selHeight)
                {
                    sideToUse = selWidth;
                }
                else
                {
                    sideToUse = selHeight;
                }
                scaleAmount = exportSizeArray[i]/sideToUse;
                return scaleAmount;
            }

            // Set the width and height of the symbol. Handle this with the size array.
            for (var i = 0; i < exportSizeArray.length; i++)
            {
                // Create a new FLA document.
                fl.createDocument();
                dom = fl.getDocumentDOM();

                // Resize the document to the current export size.
                dom.width = exportSizeArray[i];
                dom.height = exportSizeArray[i];

                // Paste the artwork to the stage.
                dom.clipPaste(true);
                sel = dom.selection[0];
                dom.setAlignToDocument(true);
                selWidth = sel.width;
                selHeight = sel.height;
                calculateScaleAmount(selWidth, selHeight);

                // Scale the artwork to the size of the stage based on the largest side.
                dom.scaleSelection(scaleAmount, scaleAmount, "center");

                // Align to the center of the stage.
                dom.align("vertical center", true);
                dom.align("horizontal center", true);

                // Output the image.
                URI = folderURI + "/" + pngFileName + "_" + exportSizeArray[i] + " x " + exportSizeArray[i] + "_";
                dom.exportPNG(URI, true, true);

                // Close the temporary FLA without saving.
                dom.close(false);
            }
        }
    }
}
于 2013-04-27T21:18:19.260 回答