Flex 4 UIComponent ширина и высота остаются нулевыми после вызова addChild

У меня есть компонент ObjectHolder который расширяется UIComponent это держит много детей UIComponents, Однако после использования addChild() добавить этих детей в ObjectHolder, его ширина и высота остаются нулевыми. Возможно ли это для UIComponent автоматически расширяться до размера содержащих его дочерних компонентов?

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 ответа

Чтобы изменить размер компонента, вы должны реализовать measure() метод. Но вы также должны следовать другим рекомендациям по созданию пользовательских компонентов. В вашем случае вы должны создать и добавить дочерний компонент в createChildren() метод.

Возможно ли, чтобы UIComponent автоматически расширялся до размера своих дочерних компонентов?

Формальный ответ - нет. Компонент никогда не отвечает за установку собственных значений высоты и ширины; он отвечает только за определение размера и позиционирование своих дочерних элементов на основе значений, установленных родителем этого компонента.

Если вы реализуете метод measure() в своем компоненте, вы можете использовать его, чтобы установить measureWidth и measureHeight вашего компонента. По сути, это будет предложение, которое вы предоставите контейнеру вашего родителя, какой идеальный размер вам необходим для правильного позиционирования и размера всех ваших дочерних элементов. Ваши собственные компоненты должны быть измерены и расположены в updateDisplayList() на основе значений unscaledWidth и unscaledHeight, переданных в.

Большую часть времени контейнеры Flex по умолчанию учитывают эти значения размеров; хотя бывают ситуации, когда их не будет. Например, если размер, который требуется дочернему контейнеру, больше размера родительского.

Другие вопросы по тегам