読み解き方01の続きです。
エクスプレッションでいうところのthisCompとかthisLayerってどう書くの?
スクリプトではエクスプレッションのthisCompとかthisLayerに厳密に対応するものはないです。
しかし、感覚的には『カーソルで選択したコンポやレイヤー』のことになると思いますので、書いていきます。実際、以下の記述を最初に書くことが圧倒的に多いですね。
//選択タイムラインコンポ
var mAi = app.project.activeItem;
//選択レイヤー(複数)
var mSls = mAi.selectedLayers;
//選択レイヤー(ひとつ)
var mSl = mSls[0];
//選択プロパティ(複数)
var mSps = mSl.selectedProperties;
//選択プロパティ(ひとつ)
var mSp = mSps[0];
変数名は何でも大丈夫です。上記は見やすい記述にするため、一段階ずつ変数に入れています。例えば、
var mSp = app.project.activeItem.selectedLayers[0].selectedProperties[0];
のように、ひとつなぎにした記述でももちろん指定できます。が、選択タイムラインコンポとかは案外後で使ったりするので、これらは細かく変数に入れておくのがオススメです。
*注意
AEスクリプトでは『activeItem』が何を指すかが、『パネルの選択状況』によって違います。
スクリプト実行直前に選択しているパネル | 『activeItem』で得られるもの |
---|---|
タイムラインパネル、もしくはビューワーパネル | 選択タイムラインコンポ |
プロジェクトパネル | プロジェクトパネル内で選んでいる1アイテム(コンポとも限らない) |
プロジェクトパネルを選んでいると、選択タイムラインコンポを得られません。ご注意下さい。
そんなことよりまずはUIを出したい!
以下のスクリプトでとりあえずUIができます。
//他スクリプトに影響がないように即時関数で囲む。
(function(){
//ウインドウを作る。
var mWdw = new Window("palette","test",[0,0,200,200]);
//ウインドウにボタンを追加する。
mWdw.mBt1 = mWdw.add("button { bounds : [0,0,60,20] , location : [10,10] , text : 'do' }");
//ボタンをクリックしたときの処理を書く。
mWdw.mBt1.onClick = function(){
alert("hi");
}
//ウインドウの出現場所を画面中央にする。
mWdw.center();
//ウインドウを出現させる。
mWdw.show();
})();
ボタンを押したときの処理を変えるには
alert("hi");
の部分を変えればよいです。
以上です。これさえわかっておけば、あとはエクスプレッションを学んだときのように「どんなメソッドが使えるんだろう」とか「if文やfor文を使ってみるか…」とか試行錯誤ができるかと思います。ぜひともスクリプトをマスターして作業の効率化を図ってみて下さい!