AviSynthPlus/for のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
* このページについて [#y6e5952e]

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

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

** オリジナル版 AviSynth では ... [#n8050cd7]

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

#pre{{
GScript("""
# for 文
""")
}}

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

* for 文の書き方 [#gaf38168]

#pre{{
for ( variable = init , limit , step ) {
    statements
}
}}

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

* for 文が実行されるときの流れ [#l505859a]

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

* for 文の使用例 [#h2eede08]

** 使用例 1 [#mdce40cc]

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

#ref(after1.png)

** 使用例 2 [#s7675a7b]

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

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

#ref(after2.png)

** 使用例 3 [#ce352c6d]

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

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

#ref(before3.png)

#ref(after3.png)

* 参考 [#a6655b49]

-[[GScript - language extensions for Avisynth - Doom9's Forum:http://forum.doom9.org/showthread.php?t=147846]]
-[[サンプルスクリプト]]