0

我需要按照以下示例使用连接访问此函数中的变量:

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);
}

如果我像这样运行代码,则 this["test" + i] 行返回该类的变量。我需要局部变量,函数的变量。

4

2 回答 2

1

您的第一步访问循环plate0将导致未找到错误,如果plate0未明确定义为类成员变量或类未定义为动态。plate3, plate4, plate5...如果LAYER_PLATES.numChildren超过 3 个,也会发生同样的事情。

编辑:

感谢@Smolniy,他纠正了我的答案plate0永远不会被访问,因为cont在第一次访问之前会增加。所以正如他提到的问题应该在plate3

于 2013-04-01T15:12:55.453 回答
0

您不会使用 [] 表示法获得局部变量。您的案例有很多解决方案。您可以使用字典或 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);
};
于 2013-04-02T08:21:19.550 回答