Actionscript 3 AS3:如何自动声明多个对象

Actionscript 3 AS3:如何自动声明多个对象,actionscript-3,Actionscript 3,我正在尝试自动初始化和填充多个对象及其相关属性 基本上,我有一个32x32网格,对于网格上的每个位置,我想指定一个具有多个属性的对象,这些属性可以在以后引用 32x32网格上有1024个位置,我真的不想手动编写那么多变量声明。我在一个单独的类文件中设置了数组,该类文件允许我为网格位置分配一个变量:gridPos.put(x,y,object.property) 我还设置了一对for循环,用默认的起始数据填充对象 现在我需要做的是让它用唯一的名称为我声明对象,然后用起始数据填充它们。这些对象需要从

我正在尝试自动初始化和填充多个对象及其相关属性

基本上,我有一个32x32网格,对于网格上的每个位置,我想指定一个具有多个属性的对象,这些属性可以在以后引用

32x32网格上有1024个位置,我真的不想手动编写那么多变量声明。我在一个单独的类文件中设置了数组,该类文件允许我为网格位置分配一个变量:gridPos.put(x,y,object.property)

我还设置了一对for循环,用默认的起始数据填充对象

现在我需要做的是让它用唯一的名称为我声明对象,然后用起始数据填充它们。这些对象需要从代码的其他部分进行访问(我试图将它们声明为public var gridPosTile[h]:Object=new Object;但将其声明为“public”时,出现了一个错误,即“1114: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++;


            }
        }
    }
公共函数gridPosTilePopulate():void
{
var g:int=40;
var h:int=1;
对于(变量i:int=0;i<32;i++)
{
var v:int=40;
g+=40;
对于(var q:int=0;q<32;q++)
{
var gridPosTile[h]: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].powerupper=false);
v+=40;
h++;
}
}
}

您没有发布完整的课程,因此我无法告诉您为什么会出现1114错误。
我将首先向类中添加一个属性来存储GridPosttle对象。 应该使用数组集合或向量。在我的示例中,我将使用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)

            }
        }
      }
    }
  }
package.com.example{
公共类名称{
//存储变量以备将来使用。
公共var tileStorage:ArrayCollection
公共函数gridPosTilePopulate():void
{
tileStorage=new ArrayCollection()
var g:int=40;
var h:int=1;
对于(变量i:int=0;i<32;i++)
{
var v:int=40;
g+=40;
对于(var q:int=0;q<32;q++)
{
var gridPosTile: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.powerupper=false);
v+=40;
h++;
//这里我们添加name属性
//尽量不要在动态类上使用关键字,因为有时它们可能已经被使用了
gridPosTile.myName=“瓷砖”+h;
tileStorage.additem(gridPosTile)
}
}
}
}
}

此外,我还将为gridPosTile创建一个自定义类,该类包含所有属性,因为这将为您提供对对象的可靠引用和一个可以进行更改的集中类。您好,谢谢,我将尝试一下:)ArrayCollection似乎无法识别?据我所见,这是FLEX框架的一部分,framework.swc,显然我可以将它复制到我的项目文件夹中并包含,但我不知道在哪里可以找到该文件以便复制它?