PhotoshopJSXでレイヤーが選択されているかどうかを検出する

PhotoshopJSXでレイヤーが選択されているかどうかを検出する

フォトショで「選択されているレイヤー」に対して処理を行いたかったのですが、先に「ドキュメントが開いているか」「レイヤーが選択されているか」をチェックしなきゃいけなくて、そこがなかなか骨が折れたのでメモしておきます。


選択されていない場合は一番上のレイヤーを取得しちゃう

参考にさせていただいたサイトにも書かれていますが、

と書いただけだと、選択されていなくても一番上(最前面)のレイヤーが返ってきてしまうのですよね。そうではない…、そうではないんだ……ッ!! で、いろいろ試行錯誤したのですが、別の処理で「ドキュメント内のすべてのレイヤー・レイヤーセットの総数を数える」関数を利用する場面があったので、これを使ってなんとかならないかな、と思って作った結果です。

これがベストというわけじゃない気がするので、参考程度に御覧ください。

参考

ありがとうございました!

コード

メイン

まずこちらがメインコード。6行目でドキュメントを引数にして、選択レイヤーの存在有無をTrue/Falseで返す自作関数です。ドキュメントが開いていない、レイヤーが選択されていない場合12行目にジャンプしてメッセージ出力して処理をせずに終了、という流れです。

選択レイヤーの存在有無を返す関数

2つの関数に分かれていて、6行目と25行目で下の「すべてのレイヤーとレイヤーセットの数を数える関数」を呼び出しています。

大きな流れは、「現状を数える」→「複製」→「もう一度数える」→「判定」という形です。選択レイヤーがある場合は、複製後レイヤーが増えているはずなので、複製前後の数の違いで判定しています。

公開日:2019/09/27

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)