AE Script書く時のテンプレ v0.1

私がScript書く時は、大抵Meadow(Emacs)使って、nabScripts.comのを真似しつつ書いてるのですが、テンプレートでも作っておくと楽かなーと思って適当に作ってみたので、いちおう公開。変なとことかあったら指摘していただけると助かります。try&catchとかした方がいいのかな……
template.zip

以下、ざっと説明。慣れてないとわかりにくいかもしれませんが、全体の流れとしては、

  • 初期化→エラーチェック(main関数)→処理実行(template関数)

という感じです。UIパネルとか作ることはここでは想定してなかったので、その辺は今後気が向いた時に追記します。

/*
    Name............
    Version.........
    Description.....
    Support.........
    Author..........
*/

Scriptの名前とか詳細とかのメモ書き

(function(){

他のスクリプトと干渉し合わないように、念のため無名関数で囲んでおく。

    /*-----------------------------------------------
    function initGlobals(G) // scriptの名前とかエラーとか

    {
        G.NAME                      =   "template.jsx";
        G.TITLE                     =   "template";
        //-----------------------------------------------------------------------------------------------------
        G.NO_PROJ_ERR               =   {en:"Open a project first.", jp:"プロジェクトを開いて下さい."};
        G.NO_COMP_ERR               =   {en:"Select a composition.", jp:"コンポジションを選択して下さい."};
        G.NO_LAYER_ERR              =   {en:"Select at least one layer.", jp:"少なくとも1つのレイヤーを選択して下さい."};
    }
    /*-----------------------------------------------
    function loc(str) // 言語(日本語or英語)
    /*-----------------------------------------------
    {
        return app.language == Language.JAPANESE ? str["jp"] : str["en"];
    }
    /*-----------------------------------------------
    function throwMsg(msg) // errorをalert
    /*-----------------------------------------------
    {
        alert(loc(msg), G.TITLE);
    }

初期設定とかエラー処理とか。

    /*-----------------------------------------------
    function template(comp)
    /*-----------------------------------------------
    {
        // 実行するscript本体
    }

ここに実行させたいscriptを記述する。関数名は適時変更

    /*-----------------------------------------------
    function main()
    /*-----------------------------------------------
    {
        // プロジェクトを開いているかチェック
        var proj = app.project;
        if (!proj) {
            throwMsg(G.NO_PROJ_ERR);
            return;
        }
        // コンポジションを選択してるかチェック
        var comp = proj.activeItem;
        if (!comp || !(comp instanceof CompItem)) {
            throwMsg(G.NO_COMP_ERR);
            return;
        }
        // レイヤーを選択する必要がある場合
        // レイヤーを少なくとも1つ選択してるかチェック
//        if (comp.selectedLayers.length < 1){
//            throwMsg(G.NO_LAYER_ERR);
//            return;
//        }

        // メイン処理であるtemplate()関数を実行
        app.beginUndoGroup(G.TITLE);
        template(comp);
        app.endUndoGroup();
    }

main関数。プロジェクトが開かれてるか、コンポジションが選択されてるかなどをチェックした後、メイン処理をするtemplate()を実行

    /*-----------------------------------------------
    // Entry Point
    /*-----------------------------------------------
    var G = new Object();
    initGlobals(G);
    main();

今まで書いてきたのは全部関数宣言なので、ようやくここで実行される記述。最初にGというオブジェクトを作成した後に初期化し、main関数を実行(main関数の中からtempate()を実行)

})();

最初に書いた無明関数”(function(){”の括弧を閉じて、即実行。

(関連記事)

  • 関連記事はありません
このエントリーを含むはてなブックマーク   このエントリーをdel.icio.usに登録する    この記事をクリップ!

Comments(2)

  1. [...] (AE 7.0) ChromaticAberration.zip ダウンロード // 2009.09.11 修正 // LianさんのScriptテンプレートを使って書き直しました。 No TweetBacks yet. (Be the first to Tweet this post) タグ [...]

  2. [...] Lianさんのスクリプトテンプレートを使用させて頂きました。 Download lcdeffect [...]

Trackback URL

コメント