[英]Photoshop script error (layer count)
var Doc = activeDocument;
var newLayerSet = Doc.layerSets.add();
var count = 0;
alert(Doc.layers.length); //A
for(var i=0; i<Doc.layers.length ; i++){
if(Doc.layers[i].name.indexOf ("MMRE") != -1){
Doc.layers[i].move(newLayerSet, ElementPlacement.INSIDE);
}
count++;
}
alert(count); //B
是脚本。 我不了解程序结果。
alert(Doc.layers.length); //A' result is 73.
but 'alert(count); //B result is 45.
可能吗? 为什么?
首先,您需要在每次运行脚本时添加一个新组。 您的脚本不计算组中的层数。 您必须具有递归功能才能找到所有图层(包括组和子组)。 与团体合作很痛苦:(
我已经修改了您的代码以允许使用递归函数:
var Doc = activeDocument;
var newLayerSet = Doc.layerSets.add();
var count = 0;
var allLayers = new Array();
var theLayers = collectAllLayers(app.activeDocument, 0);
count = theLayers;
alert("A: " + allLayers.length); //A
alert("B: " + count); //B
// function collect all layers
function collectAllLayers (theParent, level)
{
for (var m = theParent.layers.length - 1; m >= 0; m--)
{
var theLayer = theParent.layers[m];
// apply the function to layersets;
if (theLayer.typename == "ArtLayer")
{
if(theLayer.name.indexOf ("MMRE") != -1)
{
theLayer.move(newLayerSet, ElementPlacement.INSIDE);
}
}
else
{
allLayers.push(level + theLayer.name);
collectAllLayers(theLayer, level + 1)
count++;
}
}
return count;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.