4

特定の名前のすべてのレイヤーを表示する Photoshop スクリプトを作成しようとしています。可能なすべてのネストされたレイヤー セットをループする必要があり、次のコードを使用しています。

function showBounds(layerNode)
{
    for(var layer in layerNode.artLayers)
    {
        if (layer.name == "@bounds")
        {
            layer.visible = 1;
        }
    }

    showBounds(layerNode.layerSets);
}

showBounds(app.activeDocument.doc.layerSets);

しかし、実行すると、次のエラーが表示されます。

Error 1302: No such element
Line: 5
->      for(var layer in layerNode.artLayers)

artLayers は LayerSets のプロパティである必要があるため、混乱しています。

これは、PS のスクリプト作成 (および javascript の使用) に対する私の最初の試みでもあるため、理解していない基本的な概念がいくつかある可能性があります。

4

1 に答える 1

7

私はあなたがもっと次のようなものが必要だと思います:

function showBounds(layerNode) {    
    for (var i=0; i<layerNode.length; i++) {

        showBounds(layerNode[i].layerSets);

        for(var layerIndex=0; layerIndex < layerNode[i].artLayers.length; layerIndex++) {
            var layer=layerNode[i].artLayers[layerIndex];
            if (layer.name == "@bounds") {
                layer.visible = 1;
            }
        }
    }
}

showBounds(app.activeDocument.layerSets);

また、構文内のJavaScriptは、思ったとおりに機能しません。これは、foreachループのようなものではありません。オブジェクトのプロパティ名をループします。

于 2012-07-04T18:31:30.130 に答える