Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Photoshop Generatorプラグインの作り方

Photoshopとサードパーティツールとの相互運用性を高める「Generatorテクノロジー」(後編)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/12/18 14:00

目次

その他のイベント

 現状、公式のリファレンスなどは見当たりませんが、確認できているイベントとして下記のものがあります。

imageChanged

 レイヤーを選択した、レイヤーに変更を加えたなど、主に加工に関わる操作をした際に発行されるイベントです。

 実際に捕捉してしてみましょう。generatorMenuChangedの時と同じように、initにonPhotoshopEventでイベントリスナーを登録します。

function init(generator) {
    // ...
    _generator.onPhotoshopEvent("imageChanged", onImageChanged);
}


function onImageChanged(event) {
    console.log(event);
}

 記述して再接続し、新規レイヤーを作ってみると、下記のようなJSONがコマンドラインに表示されたかと思います。

{ version: '1.0.0',
  timeStamp: 1386556760.277,
  id: 1497,
  layers:
   [ { id: 3,
       index: 1,
       added: true,
       type: 'layer',
       name: 'レイヤー 1',
       bounds: [Object] },
     { id: 1, index: 0 } ],
  selection: [ 1 ] }

 ちょっと見づらいですが、レイヤー名やレイヤーのタイプ、領域などの情報が取得できることが分かります。このままでは見づらいのでeventオブジェクトをJSONとして整形するメソッドを用意しておきます。

function stringify(object) {
    try {
        return JSON.stringify(object, null, "    ");
    } catch (e) {
        console.error(e);
    }
    return String(object);
}

 stringifyを用意したら、onImageChangedの記述を下記のように変更します。

function onImageChanged(event) {
    console.log(stringify(event));
}
ここまで記述して再接続し、新規レイヤーを作ると下記のように、詳細のオブジェクトの中身まで綺麗に見えるようになります。

{
    "version": "1.0.0",
    "timeStamp": 1386557554.314,
    "id": 1510,
    "layers": [
        {
            "id": 2,
            "index": 1,
            "added": true,
            "type": "layer",
            "name": "レイヤー 1",
            "bounds": {
                "top": 0,
                "left": 0,
                "bottom": 0,
                "right": 0
            }
        },
        {
            "id": 1,
            "index": 0
        }
    ],
    "selection": [
        1
    ]
} 

toolChanged

 主にツールパレットでツールを変更した際に発行されるイベントです。"moveTool"、"paintbrushTool"などのツール名が取得できます。

 下記のように記述します。

function init(generator) {
    // ...
    _generator.onPhotoshopEvent("imageChanged", onImageChanged);
}

function onToolChanged(event) {
    console.log("ツールが変更されました。");
    console.log(stringify(event));
}

currentDocumentChanged

 選択しているPSDを切り替えた際に発行されるイベントです。変更するとPSDのidがeventとして渡ってきます。これを元に現在のドキュメントidを変数で管理すると良さそうです。

 下記のように記述します。

function init(generator) {
    // ...
    _generator.onPhotoshopEvent("currentDocumentChanged", onCurrentDocumentChanged);
}

function onCurrentDocumentChanged(event) {
    console.log("現在のドキュメントが変更されました。");
    console.log(stringify(event));
}

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 又村 洋史(マタムラ ヒロフミ)

    株式会社イノーヴ WEBクリエイター。キャンペーンサイト・コーポレートサイト・ECサイトを中心に手がける。 土日はWEBの学校クスールで非常勤講師としてJavaScriptなどを教えています。日々学ぶことばかり。個人ブログ「Deconcepter」ではWEBに関わる人が押さえておきたい情報の...

バックナンバー

連載:Adobe Developer Connection

もっと読む

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5