使用 Javascript 在 Photoshop 中查找顶级图层集
Finding the top level Layerset in Photoshop using Javascript
我现在的代码很糟糕,这是周五下午的特价:
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');
}
我这样做是为了验证脚本的其余部分是否有效(确实有效)。
图层游戏的目的是获取其顶级父项(即文档的第一个子项)的名称。所有块都应该做同样的事情。
我知道有一种更简单的方法可以做到这一点,但是我在这方面还很陌生,我不确定 javascript 和 photoshop 的一些细微差别,所以任何帮助都是巨大的赞赏!
您可能只是使用循环将链中的当前 parent
分配给一个变量,直到该变量等于 doc
,或者直到达到允许的最大父代数:
function doTheThing(layer) {
if (!isLayerSet) return;
var currentLayer = layer;
for (var parentCount = 0; parentCount < 6; parentCount++) {
currentLayer = layer.parent;
if (currentLayer === doc) {
// do something
// function call here for better readability
return;
}
}
}
你可以做一些递归的事情。它可以替换所有“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 为真。
我现在的代码很糟糕,这是周五下午的特价:
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');
}
我这样做是为了验证脚本的其余部分是否有效(确实有效)。
图层游戏的目的是获取其顶级父项(即文档的第一个子项)的名称。所有块都应该做同样的事情。
我知道有一种更简单的方法可以做到这一点,但是我在这方面还很陌生,我不确定 javascript 和 photoshop 的一些细微差别,所以任何帮助都是巨大的赞赏!
您可能只是使用循环将链中的当前 parent
分配给一个变量,直到该变量等于 doc
,或者直到达到允许的最大父代数:
function doTheThing(layer) {
if (!isLayerSet) return;
var currentLayer = layer;
for (var parentCount = 0; parentCount < 6; parentCount++) {
currentLayer = layer.parent;
if (currentLayer === doc) {
// do something
// function call here for better readability
return;
}
}
}
你可以做一些递归的事情。它可以替换所有“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 为真。