使用一个循环

时间:2016-09-10 01:43:49

标签: loops actionscript-3 variables

我的库中有很多类差不多有300个,我想通过循环生成实例名称。换句话说,我想要代替这种方法(女巫有很多代码行):

X:这是我的问题:

var cm1: Cm1 = new Cm1();
var cm2: Cm2 = new Cm2();
var cm3: Cm3 = new Cm3();
...

像这种方法一样使用(少于10个代码行):

Y:我认为这是解决方案:

for (var i: uint = 1; i < 4; i++)
{
    var getChildByName("cm" + i): getChildByName("Cm" + i) = new getChildByName("Cm" + i);
}

但我知道上面的代码不起作用,有没有办法制作它们!

- 我真的想解决什么问题?

通过几行代码制作许多变量,节省时间和尺寸app!

- 为什么我有~300个课程?你为什么要一次在循环中创建它们?

这是关于请求申请的数据!

- 这些课程做什么,你无条件地同时需要其中一个?

因为这些数据会在第一时间显示出来!

1 个答案:

答案 0 :(得分:1)

首先,最好将类存储在Array或Object中,而不是每个项目的外部变量中。如果你想通过名字访问它们,最好使用对象:

var classList:Object=new Object();

然后在你的循环中:

for(var i:uint=1;i<NumberOfClasses;i++){
    classList["cm"+i.toString()]=new (getDefinitionByName("Cm"+i.toString()) as Class)();
}

getDefinitionByName用于使用String;

创建构造函数
  

注意:如果您的类包含包目录,则应包含它。例如:

getDefinitionByName("myclasses.cm.Cm123")();

然后您可以使用支架语法

访问它们
classList["cm123"].prop=val;

不要忘记:

import flash.utils.getDefinitionByName;

我希望它会有所帮助。

修改

使用Array而不是object,循环应该是:

for(var i:uint=1;i<NumberOfClasses;i++){
    classList[i]=new (getDefinitionByName("Cm"+i.toString()) as Class)();
}

然后访问它们:

addChild(classList[0]);//0 or any other index;