2010-03-18 4 views
4

내가 플렉스 컴포넌트 프레임 워크를 사용하여 사용자 정의 플렉스 구성 요소를 만들려고 오전 :플렉스 - 사용자 정의 구성 요소 - 비율 너비/높이

http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html.

MXML :

의 TextInput 폭 = "100 %"

또는

런타임에

액션 스크립트 :

모든 좋은 구성 요소를 사용 백분율 값을 사용하여 치수를 정의 할 수 있습니다

textinp.percentWidth = 100;

내 질문은 어떻게 너비/높이 사용자 지정 구성 요소의 measure() 메서드에서 구현합니까? 좀 더 구체적으로 말하면 이러한 비율은 어떤 단계에서 픽셀 값으로 변환됩니다. 어떻게 수행됩니까?

답변

6

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 컨테이너에 구성 요소를 배치하려면 백분율 크기가 작동하기 위해 특별한 작업을 수행 할 필요가 없습니다.

관련 문제