我需要使用连接来访问此函数中的变量,遵循以下示例:
public function movePlates():void
{
var plate1:Plate;
var plate2:Plate;
var cont:uint = 0;
for (var i:uint = 0; i < LAYER_PLATES.numChildren; i++)
{
var tempPlate:Plate = LAYER_PLATES.getChildAt(i) as Plate;
if (tempPlate.selected)
{
cont ++;
this["plate" + cont] = LAYER_PLATES.getChildAt(i) as Plate;
}
}
}
编辑:
public function testFunction():void
{
var test1:Sprite = new Sprite();
var test2:Sprite = new Sprite();
var tempNumber:Number;
this.addChild(test1);
test1.x = 100;
this.addChild(test2);
test2.x = 200;
for (var i:uint = 1; i <= 2; i++)
{
tempNumber += this["test" + i].x;
}
trace("tempNumber: " + tempNumber);
}
如果我运行这样的代码,这行[“test”+ i]返回类的变量。我需要局部变量,即函数的变量。
答案 0 :(得分:1)
你的循环在第一步访问plate0
这将导致未找到错误,如果plate0
没有明确定义为类成员变量或者类没有被定义为动态。如果plate3, plate4, plate5...
超过3,LAYER_PLATES.numChildren
也会发生同样的事情。
编辑:
感谢@Smolniy,他更正了我的回答plate0
永远不会被访问,因为cont
在首次访问之前会增加。所以他提到问题应该在plate3
答案 1 :(得分:0)
您没有使用[]表示法获取局部变量。你的案子有很多解决方案。您可以使用dictionary或getChildAt()函数:
function testFunction():void
{
var dict = new Dictionary(true);
var test1:Sprite = new Sprite();
var test2:Sprite = new Sprite();
var tempNumber:Number = 0;
addChild(test1);
dict[test1] = test1.x = 100;
addChild(test2);
dict[test2] = test2.x = 200;
for (var s:* in dict)
{
tempNumber += s.x;
//or tempNumber += dict[s];
}
trace("tempNumber: " + tempNumber);
};