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 по умолчанию учитывают эти значения размеров; хотя бывают ситуации, когда их не будет. Например, если размер, который требуется дочернему контейнеру, больше размера родительского.