終了

【JavaScript】グループ内も含めてレイヤーの一番上から順番にレイヤーを取得したい

積極的な参加者 ,
Dec 04, 2022 Dec 04, 2022

リンクをクリップボードにコピー

コピー完了

お世話になります。

 

レイヤーが何個も重なっていて、その中にはいくつかのレイヤーを含むグループ(レイヤーセット?)も含まれています。

 

上から順番にレイヤーを取得したくて、

var hoge = activeDocument.layers;

for(i=0;i<hoge.length;i++){
    alert(hoge[i]);
}

 

こうしてみましたが、グループになっているものまとめてレイヤーと認識してしまうんですね。

グループにはレイヤーマスクがかかっていたりするので、解除はしたくありません。

 

グループ解除はせずに、グループ内のレイヤーも上から順番に取得するにはどうしたら良いですか。

 

キーワード
アクションとスクリプト

表示

265

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

積極的な参加者 , Dec 04, 2022 Dec 04, 2022
foo(app.activeDocument)

function foo(doc) {
    var layLength = doc.layers.length;

for (var i = 0; i < layLength; i++) {
       if(doc.layers[i].typename == 'ArtLayer'){
        layName = doc.layers[i].name;
        alert(layName);
       }else if (doc.layers[i].typename == 'LayerSet') {
            foo(doc.layers[i]);
        }
    }
};

 

なんかとりあえずできました。

間違えているところがあったら指摘してください。。

投票

翻訳

翻訳
積極的な参加者 ,
Dec 04, 2022 Dec 04, 2022

リンクをクリップボードにコピー

コピー完了

foo(app.activeDocument)

function foo(doc) {
    var layLength = doc.layers.length;

for (var i = 0; i < layLength; i++) {
        //処理内容
        layName = doc.layers[i].name;
        alert(layName);

var objType = doc.layers[i].typename;
        if (objType == 'LayerSet') {
            foo(doc.layers[i])
        }
    }
};

 

ネット上で探していたら見つかりましたが、

グループ自体のレイヤーは取得しなくていいということは可能でしょうか?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
積極的な参加者 ,
Dec 04, 2022 Dec 04, 2022

リンクをクリップボードにコピー

コピー完了

最新
foo(app.activeDocument)

function foo(doc) {
    var layLength = doc.layers.length;

for (var i = 0; i < layLength; i++) {
       if(doc.layers[i].typename == 'ArtLayer'){
        layName = doc.layers[i].name;
        alert(layName);
       }else if (doc.layers[i].typename == 'LayerSet') {
            foo(doc.layers[i]);
        }
    }
};

 

なんかとりあえずできました。

間違えているところがあったら指摘してください。。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines