Flex 레이아웃 작업의 방법은 각 구성 요소가 하위 구성 요소를 부모가 지정한 크기로 배치하도록하는 것입니다. "Children"에는 일반적인 자식 인 getChildren(), numChildren이 포함되며 테두리 및 핸들 등을 구성하는 "chrome"이라는 구성 요소가 포함되며 getRawChildren()의 일부입니다.
이제 Flex 프레임 워크는 모든 구성 요소 (실제로는 표시 트리의 일부)에 대해 두 개의 루프를 수행합니다. 첫 번째는 아래에서 위로 (가장 깊게 중첩 된 요소가 먼저)이며 measure() 메서드를 호출합니다. 그것은 원하는만큼의 공간을 가질 수 있다면 한계 (생각 : scrollbars)를 가지며 measuredWidth와 measuredHeight 속성에 넣을 수 있다면 얼마나 많은 공간 (너비/높이)을 계산해야합니다. 둘째, measuredMinHeight/measuredMinWidth에 절대 최소값을 넣을 공간을 계산합니다. 이를 계산하기 위해 테두리 두께, 크롬 및 일반 어린이는 getExplicitOrMeasuredHeight()/Width()를 사용하여 크기에 대해 질문하고 함께 추가합니다. 그것이 깊이 우선의 이유입니다.
두 번째 루프는 실제 레이아웃을 수행하는 것입니다. 이것은 트리의 맨 위에서 시작하여 updateDisplayList가 호출되고 x/y 매개 변수가 실제로 얼마나 많은 크기를 구성 요소에 알려줍니다. 이 정보를 기반으로 구성 요소는 직접 자녀에게 (부모와 관련하여) 어디에 있어야하며 얼마나 커야 하는지를 알려줍니다. child.move (x, y) 및 child.setActualSize (w, h)
So 그것은 실제로 상대 크기를 고려하는 부모 컨테이너입니다. 구성 요소는 이상적인 (최소 크기로 모든 것을 표시 할 수 있음) 상태 및 measure()의 최소 크기를 나타내며 updateDisplayList()에서 가져온 내용을 처리해야합니다. 상위 구성 요소는 사용 가능한 공간을 사용하여 각 구성 요소가 최소 크기를 얻은 다음 나머지를 모든 구성 요소에 배포합니다. 이 단계에서는 자녀의 percentWidth/Height 속성을 살펴볼 것입니다.
따라서 HBox와 같은 표준 Flex 컨테이너에 구성 요소를 배치하려면 백분율 크기가 작동하기 위해 특별한 작업을 수행 할 필요가 없습니다.