SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

Photoshop Generatorプラグインの作り方

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

その他のイベント

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

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));
}

次のページ
JSXを読み込んで実行する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Adobe Developer Connection連載記事一覧

もっと読む

この記事の著者

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

株式会社イノーヴWEBクリエイター。キャンペーンサイト・コーポレートサイト・ECサイトを中心に手がける。 土日はWEBの学校クスールで非常勤講師としてJavaScriptなどを教えています。日々学ぶことばかり。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7545 2014/01/22 14:38

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング