Photoshop Java脚本以获取活动文档中的所有层 [英] Photoshop Javascript to get all layers in the active document

查看:0
本文介绍了Photoshop Java脚本以获取活动文档中的所有层的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我相信Photoshop的编写者以前应该讨论过这个问题。我写了一个解决方案如下。我认为这在逻辑上是正确的,但结果是不正确的。有人可以帮助检查代码中的错误之处,或者对这个主题有想法吗?我想获取文档中的所有层。

编码:

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) ? -1 : tmp.length-1;
        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;  
}

非常感谢您的帮助或讨论。

推荐答案

我知道这是一个旧帖子,但这可能对某些人有用。

我正在寻找一个函数,它可以让我在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脚本以获取活动文档中的所有层的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆