Photoshop extensionでjsxを呼び出す方法
複数のjsxを作成してくると、scriptで呼び出しするのが面倒になり、Extensionでボタン一個で呼び出したくなる。
最初はmanifest.xmlに複数ScriptPathを入れればうまくいくだろーと言う気持ちだったのですが、これがどうにもうまく行かず....(一つしか読み込めない仕様なのかな?)
仕方なく、押したパネルのボタンに応じてjsxを読み込む方式にすることに。
ちょっと癖があったので備忘録。
現在のScriptPathを取得
jsxの読み込みは相対パスだとうまく行かないので、絶対パスを取得する。
埋め込んでもいいですが、汎用性が低くなるのでプログラムで取得したい
function getScriptPath()
{
return new CSInterface().getSystemPath(SystemPath.EXTENSION);
}
CSInterfaceくん便利....
指定したjsxを実行
function scriptExecuter(name)
{
var path = getScriptPath() + "/jsx/"+name+".jsx";
try { csInterface.evalScript('$.evalFile( "'+path+'")'); }
catch(e) { alert(e); }
}
jsxはextensionプロジェクト以下の/jsxフォルダに全部まとめる。
呼び出すjsxの中身は即時関数になっているか、読み込んだタイミングでうまくメインの関数が呼ばれる仕組みになっていないといけないのが注意.
普段、スクリプトから呼び出す形式で開発していたjsxをそのまま配置すれば使えるので、なかなか便利。
スクリプトでは普通に#include hogehoge
とか使えます