我有一个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
}
}
答案 0 :(得分:2)
要更改组件的大小,您应该implement measure()
method。但你也应该关注其他recommendations on creating custom components。在您的情况下,您应该在createChildren()
method中创建和添加子组件。
答案 1 :(得分:1)
UIComponent是否可以自动扩展到该大小 它含有儿童成分?
正式答案是否定的。组件永远不负责设置它自己的高度和宽度值;它只负责根据该组件的父级设置的值来确定其子级的大小和位置。
如果在组件中实现measure()方法,则可以使用它来设置组件的measuredWidth和measuredHeight。从本质上讲,这将是一个建议,即您向父母的容器提供正确定位和调整所有子元素所需的理想大小。您自己的组件应根据传入的unscaledWidth和unscaledHeight值在updateDisplayList()中调整大小和位置。
大多数情况下,Flex默认容器将遵循这些大小调整值;虽然有些情况他们不会。例如,如果子容器所需的大小超过父容器的大小。