AviSynthPlus/for

このページについて

このページでは、for 文を使ったループについて説明します。for 文は、AviSynth+ で利用可能です。

なお、AviSynth+ 公式のヘルプで for 文に関する説明を確認できなかったため、以下の説明は元になった GScript プラグインの説明を参考に作成しました(下記の「参考」欄を参照)。

オリジナル版 AviSynth では ...

なお、オリジナル版の AviSynth では for 文を使った条件分岐はできませんが、GScript プラグインを使うことによって、同等のことが実現可能となります。その際、以下のように for 文全体を GScript() の中に入れてやる必要があります。

GScript("""
# for 文
""")

また、再帰を使ってループを行うことも可能です(少し難しいので、ここでの説明はしません)。

for 文の書き方

for ( variable = init , limit , step ) {
    statements
}
  • variable: 変数名。
  • init: 初期値。整数。
  • limit: 上限。step>0 の場合、variable がこの値を超えたらループを抜ける(step<0 の場合は、variable がこの値未満ならループを抜ける)。整数。
  • step: 1 回のループが終了したあと、ここで指定した値だけ variable が変化する。0 以外の整数値をとる。デフォルトは 1。オプション。
  • statements: 文。for 文内で繰り返し実行したいスクリプトを書く。複数行可。

for 文が実行されるときの流れ

1. まず、variable に init が代入される。 2.

  • variable が limit 以下なら(step>0 のとき)、statements が実行される。
  • variable が limit を超えていたら(step>0 のとき)、条件を満たさないので、ループを抜ける。 3. 変数に step が加算される。 4. 2 に戻る。

for 文の使用例

使用例 1

# 空のクリップをソースとして使用
BlankClip()
# ブロックの中を 10 回実行
for (i=0, 9) {
    # 変数 i の数値を String() で文字列に変換して表示する。
    # i は 0 からはじまって、9 になるまで、1 ずつ増えていく。
    # 重ならないように表示位置を 15 ずつ下にずらす。
    Subtitle(String(i), y=i*15)
}
after1.png

AvsPmod でプレビューしたところ。0 から 9 まで縦に並んで表示されています。

使用例 2

BlankClip()
for (i=0, 9, 2) {
    Subtitle(String(i), y=i*15)
}

step のぶんだけ i は変化するので、step=2 なら、i は 2 ずつ増えます。

after2.png

AvsPmod でプレビューしたところ。1 個飛ばしになっているのがわかります。

使用例 3

# AviSynth のバージョンを表示するクリップをソースとして使用
Version()

# ブロックの中を 10 回実行
for (i=0, 9) {
    # ぼかし
    Blur(1)
}
before3.png

ぼかし適用前。AviSynth のバージョンが表示されています。

after3.png

ぼかし適用後。ぼかし(Blur(1))が 10 回適用されているので、画像がかなりぼやけています。

参考

最終更新日時: 2014-08-02 (土) 22:30:21 (3717d)