在Javascript中循环使用Photoshop图层

时间:2012-07-04 18:00:07

标签: javascript photoshop

我正在尝试编写一个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),因此可能会有一些我没有得到的基本概念。

1 个答案:

答案 0 :(得分: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);

另外,语法中的javascripts不能像你想象的那样工作。它不像foreach循环。它遍历对象的属性名称。