多次元配列の作成

ActionScript では、配列を "ネストされた配列"として実装できます。ネストされた配列とは、基本的には配列の配列です。ネストされた配列は、"多次元配列" とも呼ばれ、マトリックスまたはグリッドと見なすことができます。そのため、プログラミングの際は、多次元配列を使用してこのような種類の構造を作成することができます。たとえば、チェスボードは 8 個の列と行で構成されるグリッドです。チェスボードは、8 個のエレメントを含み、それぞれが、8 個のエレメントを含む配列のモデルとなります。

たとえば、ストリングのインデックス付き配列として保存されるタスクのリストを考えてみます。

var tasks:Array = ["wash dishes", "take out trash"];

曜日ごとに異なるタスクのリストを保存する場合は、曜日ごとに 1 つのエレメントを持つ多次元配列を作成できます。各エレメントには、タスクのリストを格納するインデックス付き配列が含まれます。

注意

 

配列アクセス演算子を使用した場合、ActionScript のコンパイラは、アクセスされるエレメントがそのオブジェクトの有効なプロパティであるかどうかをチェックできません。

基本的な多次元配列を作成し、配列からエレメントを取得するには :

  1. 新しい Flash ドキュメントを作成し、multiArray1.fla という名前で保存します。
  2. タイムラインのフレーム 1 に次の ActionScript を追加します。
    var twoDArray:Array = new Array(new Array("one","two"), new Array("three", "four"));
    trace(twoDArray);
    

    この twoDArray 配列は、2 つの配列エレメントで構成されます。これらのエレメントそのものが、2 つのエレメントで構成される配列です。この場合、twoDArray は 2 つのネストされた配列を含むメイン配列です。

  3. [制御]-[ムービープレビュー] を選択してコードをテストします。[出力] パネルに次の結果が表示されます。
    one,two,three,four
    
  4. オーサリングツールに戻り、[アクション] パネルを開きます。次に示すように、trace ステートメントをコメントアウトします。
    // trace(twoDArray);
    
  5. タイムラインのフレーム 1 のコードの末尾に次の ActionScript を追加します。
    trace(twoDArray[0][0]); // 1
    trace(twoDArray[1][1]); // 4
    

    多次元配列のエレメントを取得するには、最上位の配列の名前の後に、複数の配列アクセス演算子 ([]) を使用します。最初の [] は、最上位の配列のインデックスを参照します。以降の配列アクセス演算子は、ネストされた配列のエレメントを参照します。

  6. [制御]-[ムービープレビュー] を選択してコードをテストします。[出力] パネルに次の結果が表示されます。
    one
    four
    

ネストされた for ループを使用して、多次元配列を作成できます。次の例にその方法を示します。

for ループを使用して多次元配列を作成するには :

  1. 新しい Flash ドキュメントを作成し、multiArray2.fla という名前で保存します。
  2. タイムラインのフレーム 1 に次の ActionScript を追加します。
    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) をトレースします。

  3. [制御]-[ムービープレビュー] を選択してコードをテストします。

    [出力] パネルに次の結果が表示されます。

    [0][0],[0][1],[0][2],[1][0],[1][1],[1][2],[2][0],[2][1],[2][2]
    

次の例に示すように、ネストされた for ループを使って、多次元配列のエレメントの繰り返し処理を実行することができます。

for ループを使用して多次元配列の繰り返し処理を実行するには :

  1. 新しい Flash ドキュメントを作成し、multiArray3.fla という名前で保存します。
  2. タイムラインのフレーム 1 に次の ActionScript を追加します。
    // 前の例より
    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 の各エレメントの繰り返し処理を実行します。内側のループはネストされた配列の繰り返し処理を実行し、各配列ノードを出力します。

  3. 手順 2 で入力したコードに従って、タイムラインのフレーム 1 に次の ActionScript を追加します。
    // エレメントの繰り返し処理を実行
    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 プロパティを、ループ条件として使用します。

  4. [制御]-[ムービープレビュー] を選択して、[出力] パネルに表示されるエレメントを確認します。[出力] パネルに次の結果が表示されます。
    [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