我正在尝试编写一个 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/