Top | Contents | Prev | Next
ループ(loop)

 ループとは輪を意味し、ループ文とは繰り返し処理を行う文の事です。例えばある値に達するまで同じ処理を繰り返し行いたい場合にループ文を使用せずに書くとコードが長くなり手間も時間も掛かります。ActionScript3.0にはいくつかのループ文が用意されていますので、ここで説明します。

ループ文の種類
 ループ文には以下の種類があります。初めての方は下の表のwhile(ホワイル)が簡単なのでそれから使用してみてください。

while
 whileループ文は条件がtrueである限り繰り返し実行されます。while文に関しては1つずつ手順を追って説明しています。最初に書式を見て例を試してみてください。

書式:
最初にwhileを記述して、ペア括弧()内に条件式を記述し、その条件がtrueの間、繰り返し行われる命令を中括弧{}内に記述します。
while (条件式)
{
ステートメント;
}

例:
下のコードは変数 i が10よりも小さい場合はtrace()関数で変数 i を出力パネルに表示してから変数 i にインクリメント ++ を使用して1増加させてます。そして最終的に変数 i が10になった時点でこのループは終了します。
var i :int = 0;
while (i < 10)
{
	trace(i);
	i++;
}

・出力結果は以下の通りです。0から9までが表示されます。(変数 i が10になった時点でループが終了しますので9までの表示となっています。)
出力結果
・ループ文に慣れる為に実際に一行ずつコードを書いてみましょう。

・最初に変数 i の宣言をします。これは条件式内での条件の対象となる変数です。変数の値は0にします。
var i:int = 0;

・次の行にwhileを記述しペア括弧を記述します。
while()

・このペア括弧内にループを行う為の条件式を記述します。今回は変数 i が10よりも小さい場合の条件式を作成します。比較演算子を使用してi < 10 と括弧内に記述します。
while(i < 10)

・次にペア括弧の後すぐに中括弧をペアで記述します。
var i:int = 0;
while (i < 10){
	}


・中括弧の中に変数 i を出力パネルに表示させる関数trace()を記述します。
var i:int = 0;
while (i < 10){
	trace(i);
	}

・次に処理を行うたびに変数 i 増加をさせる++を記述して終了です。このi++;がなければ、いつまでたっても変数 i の値は最初に宣言した時の0のままなのでループが終わりません。
var i:int = 0;
while (i < 10)
{
	trace(i);
	i++;
}

Ctrl + Enter キー (Windows) または Command + Enter キー (Macintosh) を押して出力パネルの結果を見てください。0から9までの値が出力されれば成功です。
do while
whileループ文は条件式がtrueの場合にコードブロック内(中括弧)のステートメントを実行しました。do while文は条件式のtrue,false問わず一度だけコードブロック内の命令を処理します。その後に条件式の判定を行い繰り返し処理を行うかどうか判断します。

書式:
do {
ステートメント;
} while (条件式);

例:
下のコードは変数 i に10を代入して、一度だけtrace()関数を実行して次にwhileで条件の判定を行っています。すでに変数 i は10なので 変数 i は10よりも大きいのでループせず終了します。
var i:int = 10;
do {
	trace(i);
} while (i < 10);
//出力は最初の一回10のみ

for
forループ文は変数の初期値、条件、更新を最初に設定し条件がtrueの場合コードブロック内のステートメントを繰り返し実行します。

書式:
for (初期値; 条件式; 更新) {
ステートメント;
}

例:
下のコードは変数 i の型指定を行い、for のペア括弧内に初期値(i = 0;)条件式(i < 10;)更新(i++)を設定して繰り返し処理を行っています。
var i:int;
for (i = 0; i <10; i++) 
{
	trace(i);
}

・出力結果は以下の通りです。while文で説明した時と意味は同じです。
出力結果
for..in
for..inループ文は配列の要素(エレメント)、オブジェクトのプロパティ名の処理を行う事ができます。inの部分に着目してもらいたいのですが、inの後には配列名またはオブジェクト名が置かれます。これは配列の中(in)の要素、オブジェクトの中(in)のプロパティという意味です。

注意: for..inを理解するには配列、オブジェクトキーを使用した結合配列作成方法の知識が必要です。

書式:(配列の要素の処理)
for (初期値 in 配列名)
 {
ステートメント;
}

例:
下のコードはmyArrayの中の要素をfor..inを使用して取り出してtrace()で出力しています。
var myArray:Array = ["Flash" , "Illustrator" , "PhotoShop"];
for (var i:String in myArray)
{
	trace(myArray[i]);
}

//出力:
//Flash
//Illustrator
//PhotoShop


書式:(オブジェクトの処理)
for (変数名 in オブジェクト名 ) 
{
ステートメント;
}

例:
 下のコードはmyHashの中のキーをfor..inを使用して取り出してtrace()で出力しています。(キーの出力結果が順番ランダムの理由は結合配列の学習で説明しています。

forの()内の変数 i はmyHashのキー (プロパティ名)となります。今回trace(i);で配列内のキーを出力しましたが、値(プロパティの値)を出力したい場合はtrace(myHash[i]);を使用します。値は"Tokyo","Madrid","Washington"を指します。
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
for (var i:String in myHash)
{
	trace(i);
}

//出力:3つのキーが順番ランダムに出力されます。(必ずしも下記の順番にはなりません。)
//America
//Spain
//Japan
for each..in

for each..in文は結合配列のキー (プロパティ名)、オブジェクトキーではなくキーのプロパティ値に対してループ処理を行います。

書式:

for each(変数名 in 配列名またはオブジェクト名 )
{
ステートメント;
}


例:
var myHash:Object = {Japan:"Tokyo" , Spain:"Madrid" , America:"Washington"};
for each (var i:String in myHash) 
{
	trace(i);
}

//出力:3つのキーの値が順番ランダムに出力されます。(必ずしも下記の順番にはなりません。)
//Tokyo
//Madrid
//Washigton
トップへ
Top | Contents | Prev | Next