0

関連するプロパティとともに複数のオブジェクトを自動的に初期化して設定しようとしています。

基本的に私は 32x32 グリッドを持っており、グリッド上の各位置に対して、後で参照できる複数のプロパティを持つオブジェクトを割り当てたいと考えています。

32x32 のグリッドには 1024 の位置があり、多くの変数宣言を手動で作成する必要はありません。グリッド位置に変数を割り当てることができる別のクラス ファイルに配列を設定しました: gridPos.put(x, y, object.property);

また、オブジェクトにデフォルトの開始データを設定する一対の for ループも設定しました。

ここで行う必要があるのは、オブジェクトを一意の名前で宣言してから、それらすべてに開始データを入力することです。これらのオブジェクトは、コードの他の部分からアクセスできる必要があります (私はそれらを public var gridPosTile[h] : Object = new Object;として宣言しようとしましたが、それを「public」として宣言すると、「1114: The public」というエラーが表示されました属性はパッケージ内でのみ使用できます。" )

*また、[h]が正しくないことは知っていますが、頭の中でそれがどのように機能するかをちょっと見ました...私を照らしてください:)

どうもありがとう

    public function gridPosTilePopulate():void
    {

        var g: int = 40;
        var h: int = 1;

        for(var i:int = 0; i < 32; i++)
        {
            var v: int = 40;

            g += 40;

            for(var q:int = 0; q < 32; q++)
            {
                var gridPosTile[h] : Object = new Object;

                gridPos.put(i, q, gridPosTile[h]);

                gridPosTile[h].xPos = (v + 40));
                gridPosTile[h].yPos = (g + 40));
                gridPosTile[h].p1Set = false);
                gridPosTile[h].p2Set = false);
                gridPosTile[h].m1Set = false);
                gridPosTile[h].m2Set = false);
                gridPosTile[h].m3Set = false);
                gridPosTile[h].m4Set = false);
                gridPosTile[h].coinSet = false);
                gridPosTile[h].powerupSet = false);

                v += 40;
                h++;


            }
        }
    }
4

1 に答える 1

0

完全なクラスを投稿していないため、1114 エラーが発生した理由を説明できません。
まず、クラスにプロパティを追加して、gridPosTitle オブジェクトを格納します。配列コレクションまたはベクトルを使用する必要があります。私の例では、arrayCollection を使用します。
このストレージ コレクションを使用すると、作成したすべてのタイルを簡単に参照できます。
動的な名前のプロパティを追加するには、ブラケット表記を使用するだけです。
最後に、"h" への参照をすべて削除します。これは、オブジェクトに名前を付ける以外には必要ないためです。

package com.example{
    public class SomeClassName{

      // storage var for future use.
      public var tileStorage:ArrayColelction
      public function gridPosTilePopulate():void
      {
        tileStorage = new ArrayCollection()

        var g: int = 40;
        var h: int = 1;

        for(var i:int = 0; i < 32; i++)
        {
            var v: int = 40;

            g += 40;

            for(var q:int = 0; q < 32; q++)
            {
                var gridPosTile : Object = new Object;

                gridPos.put(i, q, gridPosTile);

                gridPosTile.xPos = (v + 40));
                gridPosTile.yPos = (g + 40));
                gridPosTile.p1Set = false);
                gridPosTile.p2Set = false);
                gridPosTile.m1Set = false);
                gridPosTile.m2Set = false);
                gridPosTile.m3Set = false);
                gridPosTile.m4Set = false);
                gridPosTile.coinSet = false);
                gridPosTile.powerupSet = false);

                v += 40;
                h++;
                // here we add the name property
                // try to never use keywords on dynamic classes since sometimes they may already be used
                gridPosTile.myName = "tile_" + h;
                tileStorage.additem(gridPosTile)

            }
        }
      }
    }
  }
于 2012-07-27T03:50:51.597 に答える