Flex 4 UIComponent ширина и высота остаются нулевыми после вызова addChild - PullRequest
0 голосов
/ 25 августа 2011

У меня есть компонент 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 ]

2 голосов
/ 25 августа 2011

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

1 голос
/ 25 августа 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...