javascript - 在 Javascript 中循环遍历 Photoshop 图层

标签 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),所以可能有些基本概念我没有理解。

最佳答案

我认为你需要更多类似的东西:

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 for...in 语法并不像您认为的那样工作。它不像 foreach 循环。它遍历对象的属性名称。

关于javascript - 在 Javascript 中循环遍历 Photoshop 图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11333658/

相关文章:

javascript - 使用 HTML5 验证多个电子邮件地址

javascript - 当事件处理程序已经绑定(bind)时,如何让标记被拖动?

javascript - ArrayController.addObjects 之后的 Emberjs Hook 称为 EmberJs 1.0.0

javascript - 将对象数组传递给部分-handlebars.js

css - 任何浏览器中的奇怪字体外观

css - 使用css的负饱和度

javascript - Google 跟踪代码管理器 API 示例在控制台中抛出 "Uncaught RangeError: Maximum call stack size exceeded"错误

image-processing - 如何通过随机分层源图像自动生成合成图像?

xcode - 为 Photoshop CS5 构建插件需要哪些工具?

javascript - 从 RGB 转换为 L*ab 颜色时值不准确