1

「箱から出して」解決できない可能性のある問題があります。私は花火8を実行していて、実行できるようにしたいと思います:

Commands->Document->Split to layers

レイヤーを作成したスライスの名前を使用して、結果のレイヤーを作成します。たとえば、pngに「Head」、「Shoulder」、「Arm」という3つのスライスがある場合、そのコマンドでスライス名に対応するレイヤー名を作成します。現在のところ、このコマンドを実行すると、作成されるデフォルトのレイヤー名は、「レイヤー1」、「レイヤー2」、「レイヤー3」などの名前が順番に付けられます。

この要件の理由は、Exportコマンドを使用して、デフォルトのレイヤー名ではなく、'スライス名(' Head.png'など)を使用する名前付きpngファイルに個々のレイヤーを保存したいという事実によるものです。これで、スライスに一致するようにレイヤーの名前を手動で変更し、必要に応じてフォルダーにエクスポートできることがわかりました。ただし、実際のシナリオでは、この処理が必要なドキュメントごとに50を超えるスライスがあり、プロセスを「バッチ処理」するために一度に数百のドキュメントがあります。したがって、私の考えは、含まれているスライスと同じ名前のレイヤーを作成できるコマンドを実行(または何らかのマクロを作成)できるようにすることでした。

これにより、各ファイルを開いて上記のコマンドを実行し、各レイヤーの名前を手動で変更するのではなく、フォルダー構造内にある一連のソースイメージに基づいてプロセスを完全に自動化できるため、私の生活ははるかに簡単になります(もちろんエラーが発生しやすい)次に、エクスポート機能を実行します。

誰かがこれに対する解決策を見つけるためのアドバイスを提供できますか?この要件に遭遇したのは私だけではないことを願っています。

4

2 に答える 2

1

ここに[レイヤーに分割]コマンドに行を追加しました。これをDistribute to Named Layers.jsf元のコマンドと同じフォルダーに保存すると(CS5.5では、構成/コマンド/ドキュメントで見つかりました)、必要な処理が実行されるはずです。

とは言うものの、私の経験ではjsfはかなり予測不可能です(たとえば、そのコマンドは、名前が変更されるまでRectanglesなどのデフォルト名を見逃しているようです)。したがって、100%の時間で機能するかどうかはわかりません。また、スクリプトは5.5のスライスを含むWebレイヤーをスキップします。8でセットアップが異なるかどうかは思い出せません。

于 2013-03-25T19:46:54.190 に答える
1

参考までに-これが最終的なprogramatic修正になります(david mearのおかげで)

// This command will take multiple objects and move them to indivdual layers
// and then prompt for a folder location to save the layers as named-layer.png
// files. This is ultra useful if you want to save slices out to individual
// files and wish to have total control over the resulting file names

var curDoc = fw.getDocumentDOM();
// Save the current frame in the document
var curFrameNum = curDoc.currentFrameNum;

// get the total layers minus the web layer
var numLayers = curDoc.layers.length - 1;  // skip the web layer.

var curLayerNum;

// default to d:\ for now
var locFolder = fw.browseForFolderURL("select a folder", "file:///d|/");

// 23/3/2013 add dialog box for file
if (locFolder !== null) {
    // loop through the current number of layers
    for (curLayerNum = numLayers - 1; curLayerNum >= 0; curLayerNum--) {
        // get the current layer
        var curLayer = curDoc.layers[curLayerNum];

        // get the elements on the current layer
        var elements = curLayer.frames[curFrameNum].elements;
        //if layer is locked cannot distribute so continue to next layer.
        if (curLayer.frames[curFrameNum].locked == true)
            continue;
        // get the number of elements
        var numElements = elements.length - 1;
        var i;

        // loop through the number of elements
        for (i = 0; i < numElements; i++) {
            // get the current layer number
            if (i == 0) curDoc.currentLayerNum = curLayerNum;
            // add layers for the number of elements
            curDoc.addNewLayer(null, false);
        }
        // again loop through the number of elements
        for (i = 0; i < numElements; i++) {
            // set the current layer
            curLayer = curDoc.layers[curLayerNum];
            // get the elements on the current layer
            elements = curLayer.frames[curFrameNum].elements;
            // select none
            curDoc.selectNone();
            // create a new array that will hold the selection
            var sel = new Array();
            // populate the array
            sel[0] = elements[elements.length - 2];

            // EDIT - 25/3/2013 rename target layer if element has a name
            curDoc.setLayerName(curLayerNum + i + 1, sel[0].name || "");

            // select all of the elements of the array in Fireworks
            fw.selection = sel;
            // move the selection to its new layer
            curDoc.moveSelectionToLayer(curLayerNum + i + 1, false, "none", -1);
        }
    }

    // EDIT - 25/3/2013 set to png32 export option
    set_export_as_png_32(curDoc);
    fw.exportLayers(curDoc, locFolder);
}


function set_export_as_png_32(targetDoc) {
    targetDoc.setExportOptions(
        {
            animAutoCrop: true,
            animAutoDifference: true,
            applyScale: false,
            colorMode: "32 bit",
            crop: false,
            cropBottom: 0,
            cropLeft: 0,
            cropRight: 0,
            cropTop: 0,
            ditherMode: "none",
            ditherPercent: 100,
            exportFormat: "PNG",
            frameInfo: [],
            interlacedGIF: false,
            jpegQuality: 80,
            jpegSelPreserveButtons: false,
            jpegSelPreserveText: true,
            jpegSelQuality: 90,
            jpegSelQualityEnabled: false,
            jpegSmoothness: 0,
            jpegSubsampling: 0,
            localAdaptive: true,
            lossyGifAmount: 0,
            macCreator: "",
            macFileType: "",
            name: "PNG32",
            numCustomEntries: 0,
            numEntriesRequested: 0,
            numGridEntries: 6,
            optimized: true,
            paletteEntries: null,
            paletteInfo: null,
            paletteMode: "adaptive",
            paletteTransparency: "none",
            percentScale: 100,
            progressiveJPEG: false,
            savedAnimationRepeat: 0,
            sorting: "none",
            useScale: true,
            webSnapAdaptive: false,
            webSnapTolerance: 14,
            xSize: 0,
            ySize: 0
        }
    );
}
于 2013-03-26T14:17:00.787 に答える