« 条件分岐 | メイン | メソッドと関数の定義 »

繰り返し(ループ)

同じ処理を繰り返し実行したい時にはforやwhileを使うと便利です。ただし、繰り返し処理をしている間はほかの処理が行われないので、座標を一定距離ずつ動かすといった処理には向いてません。そのような処理はMovieClip.onEnterFrameイベントハンドラやsetInterval()関数を利用します。(setInterval()→p.??)


note:
配列やオブジェクトを走査するfor~inについては配列で説明しています。(for~in→p.??)
ループ処理を15秒以上続けるとエラーになります。

■for
for文は、まず初期化を行い、次に条件式を評価します。条件式の結果がfalseならばそこでfor文を終了し、trueならば{}のブロックを実行します。{}のブロックを実行したならば更新処理を行い、再び条件式を評価します。条件式がfalseになるまでこれを繰り返します。
簡単に言えば、後述のwhileと同じく「条件がtrueの間は繰り返す」になります。


for (初期化; 条件式; 更新処理){
// 繰り返すスクリプト
}

書式からするとさまざまな用途で利用できる構文ですが、一般的には次のようにカウンタを使った繰り返しの処理に利用します。

「カウンタが指定の値になるまで繰り返す」
for (カウンタ=初期値; カウンタの評価式; カウントアップまたはカウントダウン){
// 繰り返すスクリプト
}

具体的には次のようなスクリプトを書きます。これを実行するとカウンタの変数iが10になるまでブロックを繰り返し実行します。これをプレビューすると10回の繰り返し中のiとiの2倍の値が出力ウインドウに表示されます。

for (var i=1; i<=10; i++){
var a = i*2;
trace([i,a]);
}

出力結果:
1,2
2,4
3,6
4,8
5,10
6,12
7,14
8,16
9,18
10,20

この繰り返しを図で表すと次のようになります。

図3-6-7 forステートメントを利用した繰り返しの処理。

■while
条件式が満たされている間(trueのとき)はスクリプトを繰り返し実行したい場合にはwhileを使います。最初から条件が満たされていないときには、while内のスクリプトは1回も実行されません。条件式の値が常にtrueだと無限ループに陥ってしまうので条件設定には注意が必要です。

「条件を満たす間は繰り返す」
while (条件式){
// 繰り返すスクリプト
}

note:
意図的に無限ループを作り、ある条件を満たしたならばbreakで抜けるという手法もあります。

■do~while
do~whileはwhile文と似ていますが、条件式を判断する前に最初に1回スクリプトを実行します。後はwhile文と同じです。

「条件を満たす間は繰り返す」
do {
// 繰り返すスクリプト
} while (条件式);


■contine
for、while、do~while、for~inの中で使います。contineを実行すると、繰り返し中のスクリプトの残りをスキップして次の繰り返しに移行します。

■break
for、while、do~while、for~inの中で使います。breakを実行すると、繰り返し中のスクリプトの残りを中断して、実行中のfor、while、do~while、for~inの文を終了し、以下に続くスクリプトへと進みます。なお、breakはswitch文でも使います。

投稿者 oshige : 2005年02月17日 11:29

トラックバック

このエントリーのトラックバックURL:
http://oshige.com/mt/mt-tb.cgi/1186

コメント

コメントしてください




保存しますか?