【AEスクリプト】読み解き方02 エクスプレッションならなんとなくわかる人へ

読み解き方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文を使ってみるか…」とか試行錯誤ができるかと思います。ぜひともスクリプトをマスターして作業の効率化を図ってみて下さい!

よかったらシェアしてね!
  • URLをコピーしました!