その他のイベント
現状、公式のリファレンスなどは見当たりませんが、確認できているイベントとして下記のものがあります。
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)); }