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) }
AvsPmod でプレビューしたところ。0 から 9 まで縦に並んで表示されています。
使用例 2 †
BlankClip() for (i=0, 9, 2) { Subtitle(String(i), y=i*15) }
step のぶんだけ i は変化するので、step=2 なら、i は 2 ずつ増えます。
AvsPmod でプレビューしたところ。1 個飛ばしになっているのがわかります。
使用例 3 †
# AviSynth のバージョンを表示するクリップをソースとして使用 Version() # ブロックの中を 10 回実行 for (i=0, 9) { # ぼかし Blur(1) }
ぼかし適用前。AviSynth のバージョンが表示されています。
ぼかし適用後。ぼかし(Blur(1))が 10 回適用されているので、画像がかなりぼやけています。