2011-08-25 4 views
0

UIComponents을 보유하는 UIComponent을 확장하는 구성 요소 ObjectHolder이 있습니다. 그러나 addChild()을 사용하여이 하위 항목을 ObjectHolder에 추가 한 후 너비와 높이가 0으로 유지됩니다. UIComponent이 포함 된 하위 구성 요소의 크기로 자동 확장 될 수 있습니까?플렉스 4 addChild가 호출 된 후 UIComponent 너비와 높이가 0으로 유지됨

public class ObjectHolder extends UIComponent 
{  
    public function ObjectHolder() 
    { 
     var c1:UIComponent = new UIComponent(); 
     c1.graphics.beginFill(0xffffff); 
     c1.graphics.drawRect(0, 0, 100, 100); 
     addChild(c1); 
     trace(this.width); // Displays zero 
    } 
} 

답변

2

구성 요소의 크기를 변경하려면 implement measure() method이어야합니다. 하지만 다른 recommendations on creating custom components도 따라야합니다. 귀하의 경우 하위 구성 요소를 작성하여 createChildren() method에 추가해야합니다.

+0

구성 요소 자체의 크기가 결정되지 않습니다. measure() 메서드를 구현하면 measuredHeight 및 measuredWidth 속성을 통해 해당 구성 요소 부모 컨테이너에만 "제안"을 제공합니다. 하지만 대부분의 기본 Flex 컨테이너는 이러한 크기를 존중합니다. – JeffryHouser

+0

measure() 메서드에 대해서는 읽었지만 addChild()가 호출 된 직후에는 즉시 호출되지 않습니다. 구성 요소가 동적으로 추가되므로 createChildren() 메서드를 실제로 재정의 할 수는 없습니다. – peter

+0

@ www.Flextras.com : Flex 컨테이너를 사용하고 있지 않습니다. "컨테이너"는 UIComponent입니다. Flex 컨테이너는 자동으로 자식이 포함 된 크기로 확장됩니까? "컨테이너"UIComponent는 평면 그리드이므로 사용자는 기본적으로 Photoshop 캔버스에서 이미지와 도형을 추가하는 것과 같은 일종의 "바닥"에 객체를 동적으로 추가합니다. – peter

1

UIComponent가 포함 된 하위 구성 요소의 크기 으로 자동 확장 될 수 있습니까?

공식적인 대답은 아니오입니다. 컴퍼넌트 자체의 높이와 폭의 값의 설정은 절대로 행해지 지 않습니다. 컴퍼넌트의 부모에 의해 설정된 값에 근거 해 아이의 크기와 위치를 결정할뿐입니다.

구성 요소에 measure() 메서드를 구현하면이 메서드를 사용하여 구성 요소의 measuredWidth 및 measuredHeight를 설정할 수 있습니다. 이는 본질적으로 모든 하위 요소를 적절하게 배치하고 크기를 정하는 데 필요한 이상적인 크기를 부모 컨테이너에 제공 할 것을 제안하는 것입니다. 자신의 구성 요소는 전달 된 unscaledWidth 및 unscaledHeight 값을 기반으로 updateDisplayList()에 크기 조정 및 배치되어야합니다.

대개의 경우 Flex 기본 컨테이너는 이러한 크기 조정 값을 사용합니다. 비록 그들이 존재하지 않을 상황이 있지만. 예를 들어, 하위 컨테이너에 필요한 크기가 상위 크기보다 큰 경우

관련 문제