Photoshop Java脚本以获取活动文档中的所有层

原学程将引见Photoshop Java剧本以夺取运动文档中的一切层的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

Photoshop Java脚本以获取活动文档中的所有层 教程 第1张

成绩描写

我信任Photoshop的编辑者之前应当评论辩论过这个成绩。我写了1个处理计划以下。我以为这在逻辑上是准确的,但是成果是没有准确的。有人不妨赞助检讨代码中的毛病的地方,或许对于这个主题有设法主意吗?我想夺取文档中的一切层。

编码:

function getAllLayersInLayerSets(layerNodes) {

 var retList = [];

 for (var i=0; i<layerNodes.length; i++) {

 if(layerNodes[i].layerSets.length > 0)
 {
  var tmp = getAllLayersInLayerSets(layerNodes[i].layerSets);

  var j = (tmp == null) ? ⑴ : tmp.length⑴;
  while(tmp && j>=0)
  {
retList.push(tmp[i]);
j--;
  }
 }
 for(var layerIndex=0; layerIndex < layerNodes[i].artLayers.length; layerIndex++) 
 {
  var layer=layerNodes[i].artLayers[layerIndex];
  retList.push(layer);
 }

}

return retList;}

异常感激您的赞助或者评论辩论。

推举谜底

我晓得这是1个旧帖子,但是这能够对于某些人有效。

我正在寻觅1个函数,它不妨让我在Photoshop Comp中取得一切ArtLayer,包含嵌套在组中的层。下面的函数前往不决义,所以我对于其停止了修正并使其正常任务。

var doc = app.activeDocument;
var allLayers = [];
var allLayers = collectAllLayers(doc, allLayers);

function collectAllLayers (doc, allLayers){
 for (var m = 0; m < doc.layers.length; m++){
  var theLayer = doc.layers[m];
  if (theLayer.typename === "ArtLayer"){
allLayers.push(theLayer);
  }else{
collectAllLayers(theLayer, allLayers);
  }
 }
 return allLayers;
}

佳了闭于Photoshop Java剧本以夺取运动文档中的一切层的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。