Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 の学習 > シンタックスと言語の基礎 > 配列について > 多次元配列の作成 | |||
ActionScript では、配列を "ネストされた配列"として実装できます。ネストされた配列とは、基本的には配列の配列です。ネストされた配列は、"多次元配列" とも呼ばれ、マトリックスまたはグリッドと見なすことができます。そのため、プログラミングの際は、多次元配列を使用してこのような種類の構造を作成することができます。たとえば、チェスボードは 8 個の列と行で構成されるグリッドです。チェスボードは、8 個のエレメントを含み、それぞれが、8 個のエレメントを含む配列のモデルとなります。
たとえば、ストリングのインデックス付き配列として保存されるタスクのリストを考えてみます。
var tasks:Array = ["wash dishes", "take out trash"];
曜日ごとに異なるタスクのリストを保存する場合は、曜日ごとに 1 つのエレメントを持つ多次元配列を作成できます。各エレメントには、タスクのリストを格納するインデックス付き配列が含まれます。
|
注意 |
|
配列アクセス演算子を使用した場合、ActionScript のコンパイラは、アクセスされるエレメントがそのオブジェクトの有効なプロパティであるかどうかをチェックできません。 |
var twoDArray:Array = new Array(new Array("one","two"), new Array("three", "four"));
trace(twoDArray);
この twoDArray 配列は、2 つの配列エレメントで構成されます。これらのエレメントそのものが、2 つのエレメントで構成される配列です。この場合、twoDArray は 2 つのネストされた配列を含むメイン配列です。
one,two,three,four
trace ステートメントをコメントアウトします。// trace(twoDArray);
trace(twoDArray[0][0]); // 1 trace(twoDArray[1][1]); // 4
多次元配列のエレメントを取得するには、最上位の配列の名前の後に、複数の配列アクセス演算子 ([]) を使用します。最初の [] は、最上位の配列のインデックスを参照します。以降の配列アクセス演算子は、ネストされた配列のエレメントを参照します。
one four
ネストされた for ループを使用して、多次元配列を作成できます。次の例にその方法を示します。
var gridSize:Number = 3;
var mainArr:Array = new Array(gridSize);
var i:Number;
var j:Number;
for (i = 0; i < gridSize; i++) {
mainArr[i] = new Array(gridSize);
for (j = 0; j < gridSize; j++) {
mainArr[i][j] = "[" + i + "][" + j + "]";
}
}
trace(mainArr);
この ActionScript は、3 x 3 配列を作成し、それぞれの配列ノードの値をそのインデックスに設定します。次に、配列 (mainArr) をトレースします。
[出力] パネルに次の結果が表示されます。
[0][0],[0][1],[0][2],[1][0],[1][1],[1][2],[2][0],[2][1],[2][2]
次の例に示すように、ネストされた for ループを使って、多次元配列のエレメントの繰り返し処理を実行することができます。
// 前の例より
var gridSize:Number = 3;
var mainArr:Array = new Array(gridSize);
var i:Number;
var j:Number;
for (i = 0; i < gridSize; i++) {
mainArr[i] = new Array(gridSize);
for (j = 0; j < gridSize; j++) {
mainArr[i][j] = "[" + i + "][" + j + "]";
}
}
このコードでは、前の例のように、外側のループが mainArray の各エレメントの繰り返し処理を実行します。内側のループはネストされた配列の繰り返し処理を実行し、各配列ノードを出力します。
// エレメントの繰り返し処理を実行
var outerArrayLength:Number = mainArr.length;
for (i = 0; i < outerArrayLength; i++) {
var innerArrayLength:Number = mainArr[i].length;
for (j = 0; j < innerArrayLength; j++) {
trace(mainArr[i][j]);
}
}
この ActionScript は、配列のエレメントの繰り返し処理を実行します。各配列の length プロパティを、ループ条件として使用します。
[0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2]
配列の使用の詳細については、配列の使用を参照してください。配列エレメントの詳細については、エレメントの追加と削除についてを参照してください。配列アクセス演算子の詳細については、ドット演算子と配列アクセス演算子の使用を参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000722.html