Flex 3:使用数组项值作为对象名称

时间:2011-08-19 20:40:51

标签: flex

如果我在数组中有一个表示模块名称的项目列表:

var phaseNames:Array = new Array("directorsPrep", "checkIO", "pickupPhoto", "pickupPhoto", "syncing", "dailies", "pictureEdit", "soundEdit", "soundMix", "colorCorrection", "finishing");

我希望仔细阅读其中的每一个并在每个模块的每个实例中调用一个函数,我将如何去做。到目前为止,我有以下内容:

private function changeStartViewDate(numDays:Number):void
{
    startViewDate = rightDate(startViewDate.getMonth(), startViewDate.getDate() + numDays, startViewDate.getFullYear());
    getDateInfo();
    determineCalendarWeek();
    var phaseNames:Array = new Array("directorsPrep", "checkIO", "pickupPhoto", "pickupPhoto", "syncing", "dailies", "pictureEdit", "soundEdit", "soundMix", "colorCorrection", "finishing");

    for (var i:int = 0; i < wholeProject.length; i++)
    {
        wholeProject[i].moveProject(Number((1-2) * numDays));
    }
    for (i = 0; i < phaseNames.length; i++)
    {
        for (var j:int = 0; j < [phaseNames[i]].length; j++)
        {
            [phaseNames[i]].movePhase(Number((-1) * numDays));
        }
    }
}

但是当我尝试保存它时,我收到以下错误:

  

1084:语法错误:在dot之前需要标识符。

它告诉我错误在以下一行:

[phaseNames[i]].movePhase(Number((-1) * numDays));

我尝试过做类似以下的事情,但它不起作用:

[phaseNames[i].movePhase(Number((-1) * numDays))];

上述尝试解决这个问题的尝试给了我以下错误

  

1064:元数据无效。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我将假设:

  1. 您的phaseNames数组的每个值都引用其他类的实际实例[而不是类的名称]
  2. phaseNames数组中定义的实例是当前类的子类。
  3. 你应该可以这样做:

    var childName = phaseNames[0];
    var myChild : myObjectType = this[childName];
    // then call function
    myChild.doStuff();
    

    这种做法与你所拥有的并没有什么不同;我只是在更多的行中做这件事。我还添加了this关键字来访问孩子。

    我敢打赌,如果你直接尝试了这个,它会起作用:

    this[phaseNames[i]].movePhase(Number((-1) * numDays));
    

    我不得不想知道为什么你没有创建所有实例的数组,而不是指向实例的所有变量名称的数组。