2011-08-19 2 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 배열의 각 값이 phaseNames 배열에 정의 된 다른 클래스의 실제 예 [아닌 클래스의 이름]
  2. 인스턴스를 참조 현재 클래스의 하위 클래스입니다.

당신은 같은 것을 할 수 있어야한다 :

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

이 방법은 당신이 무엇을 서로 다른되지 않습니다; 나는 더 많은 라인에서 그것을하고있다. 또한이 키워드를 추가하여 하위 항목에 액세스합니다.

이 시도하면 내가 직접, 내기, 그것은 일 것입니다 : 내가 가진

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

를 대신 모든 변수 이름의 배열의 모든 인스턴스의 배열을 작성하지 않은 이유를 궁금해하는 인스턴스를 가리 킵니다.