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

