javascript - 使用 Javascript 在 Photoshop 中查找顶级图层集

标签 javascript scripting photoshop

我当前的代码很糟糕,这是周五下午的特别事件:

if(layer.parent == doc && isLayerSet) {  
 //do something in this case fileNew.write('foo');  
}  
else if(layer.parent.parent == doc && isLayerSet) {  
 //do something in this case fileNew.write('foo');  
}  
else if(layer.parent.parent.parent == doc && isLayerSet) {  
 //do something in this case fileNew.write('foo');  
}  
else if(layer.parent.parent.parent.parent == doc && isLayerSet) {  
 //do something in this case fileNew.write('foo');  
}  
else if(layer.parent.parent.parent.parent.parent == doc && isLayerSet) {  
 //do something in this case fileNew.write('foo');  
}  
else if(layer.parent.parent.parent.parent.parent.parent == doc && isLayerSet) 
{  
 //do something in this case fileNew.write('foo');  
}  

我这样做是为了验证脚本的其余部分是否有效(它确实有效)。

层的游戏目标我想获取它的顶级父级的名称(即文档的第一个子级)。所有 block 都应该做同样的事情。

我知道有一种更简单的方法可以做到这一点,但是我对此仍然很陌生,并且我不确定 javascript 和 Photoshop 的一些细微差别,因此我们将不胜感激任何帮助!

最佳答案

你可以做一些递归的事情。它可以替换所有“if-else if”语句。

(function getTopLayer(element) {
  if (element.parent == doc && isLayerSet) {
    //do something in this case fileNew.write('foo'); 
  } else {
    getTopLayer(element.parent);
  }
})(layer);

但请注意,这将无限运行,直到第一个 if 为 true。

关于javascript - 使用 Javascript 在 Photoshop 中查找顶级图层集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51704261/

相关文章:

scripting - 工具或 vbscript 将硬编码文本添加到多个文件的顶部?

javascript - 在模态窗口中使用 tinyMCE

javascript - 刷新后如何淡入页面内容?

javascript - 。消除(); jquery append div

linux - 如何使用 Shell 脚本解析报告?

linux - bash 函数的正确语法作为 .bashrc 中的别名

c# - 如何在 C# 中添加对 Photoshop CS4 COM 的引用

javascript - Photoshop Javascript - 尝试创建新文本图层时出现语法错误

javascript - 根据另一个键数组对对象数组进行排序

photoshop - 在 Photoshop 中查找并替换文本问题