簡體   English   中英

Photoshop腳本錯誤(層數)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM