ユーザー定義関数の使い方

ユーザー定義関数を使用するための方法には、次の2つがあります。

1.メインスクリプトの任意の位置に貼り付ける方法

1つ目の方法は、1スクリプト内で、関数の定義と実行の両方を行う方法です。

以下の手順で行います。

  1. メインスクリプト*1内の任意の行に、使用したい関数の「function」から「}」(右中括弧)までの部分(以下、関数の定義部分と記載)を貼り付けます。
  2. その関数を使用したい行に、関数の実行(設定)行を記述します。
  • 例:
    AviSource("hoge.avi") # ソースクリップ
    FilterRange(100, 199, "TomsMoComp(1,5,1)") # 関数の実行行
    return last
    
    # 以下、関数の定義部分(他の位置に貼り付けてもよい)
    function FilterRange(clip "clip", int "start", int "end", string "filter")
    {
        c1 = start < 2 ? clip.trim(0, -1) : clip.trim(0, start - 1)
        c2 = Eval("clip.trim(start, end)." + filter)
        c3 = clip.trim(end + 1, 0)
        c = start == 0 ? c2 : c1 + c2
        c = end == 0 ? c : c + c3
        return c
    }
    
  • 註:
    関数の実行行は、関数の書式にしたがって記述されなければなりません。関数の書式は、関数の定義部分の「関数名(引数リスト)」から知ることができます。これはフィルタの書式と同様の形式です(フィルタの書式を参照)。

2.外部ファイル化してインポートする方法

もう1つの方法は、関数の定義部分を別の外部ファイル(以下、関数定義ファイルと記載)にして、メインのスクリプトにImportする方法です。

上で紹介した1スクリプト内に記述する方法では、複数の関数を利用する場合に、スクリプトが長くなり、見づらくなってしまいます。それに対し、こちらの方法では、関数の定義部分と実行行を分けるため、メインスクリプトが煩雑になるおそれはありません。

以下の手順で行います。

  1. 関数の定義部分をメモ帳にコピー&ペーストします(複数の関数の貼り付けも可)。
  2. 関数定義ファイルを、名前を付けて保存します。拡張子は、avsやavsiなどとしてください。
  3. メインスクリプト内に関数定義ファイルのImport行と関数の実行行を記述します。
  • 例:
    • メインスクリプト
      AviSource("hoge.avi") # ソースクリップ
      Import("myFunctions.avs") # 関数定義ファイルのインポート
      FilterRange(100, 199, "TomsMoComp(1,5,1)") # 関数の実行行
      return last
      
  • 関数定義ファイル(myFunctions.avs)
    function FilterRange(clip "clip", int "start", int "end", string "filter")
    {
        c1 = start < 2 ? clip.trim(0, -1) : clip.trim(0, start - 1)
        c2 = Eval("clip.trim(start, end)." + filter)
        c3 = clip.trim(end + 1, 0)
        c = start == 0 ? c2 : c1 + c2
        c = end == 0 ? c : c + c3
        return c
    }
    

*1 フロントエンドに渡すAVSファイルを指します。

最終更新日時: 2014-03-11 (火) 03:51:27 (3700d)