我的库中有很多类差不多有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个课程?你为什么要一次在循环中创建它们?
这是关于请求申请的数据!
- 这些课程做什么,你无条件地同时需要其中一个?
因为这些数据会在第一时间显示出来!
答案 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;