2011-08-19 37 views
0

如果我有一個數組,表示模塊的名稱項的列表:的Flex 3:使用數組項值作爲對象名稱

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: Syntax Error: expecting identifier before dot.

它告訴我的錯誤是在下面一行:

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

我試圖做類似下面的,但它沒有工作:

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

試圖弄清楚這一點,上述的嘗試給了我下面的錯誤

1064: Invalid metadata.

任何幫助,將不勝感激。

回答

1

我會假設:

  1. 您phaseNames陣列的每個值引用一些其他類的實際實例[和類的不是名稱]
  2. 實例的phaseNames數組中定義是當前班的孩子。

你應該能夠做這樣的事情:

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

這種做法是沒有什麼不同,你擁有什麼,我只是在多行。我還添加了這個關鍵字來訪問這個孩子。

我敢打賭,如果你試過,直接,它的工作:

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

我想知道爲什麼你還沒有創建的所有實例,而不是所有變量名稱的數組的數組指向實例。

相關問題