2009-07-15 84 views
1

我有一些自定义组件,派生自UIComponent。我重载了updateDisplayList,以便它们具有自定义外观。我创建了一个展示这些自定义组件的平台,但为了正确放置它们,我必须知道自定义组件的宽度和高度。它们是动态创建的。在所有创建完成之后(creationCompleted事件为每个事件触发),我尝试对它们进行布局,但宽度/高度属性仍为0. 我也尝试在布局过程之前将它们添加到画布。获取动态创建的自定义组件的宽度

所以我的问题是,如何创建动态放置的自定义UIComponent,并了解它的宽度和高度。

感谢


编辑:

通过使用该mx_internal命名空间,我可以设置宽度和高度(使用内部$宽度和$高度字段),它看起来像它的工作。但不是那么干净/很好的解决方案。

回答

1

如果你从UIComponent继承,而不是从它的一个子类,你可能会想确保你实施的措施()方法,等等。这里检查出的Flex文档上实现自己的UIComponents更多信息 - 有一个很好的一堆资料中读到这里,但它的所有东西,你应该知道,如果你从UIComponent直接产生:

http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html

希望它有帮助!您也可以尝试发布一些代码,以便我们有更具体的内容继续下去。但有可能的是,你只是没有实现你应该为了检索这些值而应该做的事情。 (你的直觉是正确的 - 你不应该深入到mx_internal才能得到你需要的东西。)

0

也许适用?

component.getExplicitOrMeasuredWidth() 
component.getExplicitOrMeasuredHeight() 
+0

这将返回明确设置或测量的宽度,但都是零。 只有$ width/$ height字段包含创建和绘制后有用的内容。我能否以某种方式使用这些字段,或者强制组件将它们的值写入width/height/measuredWidth ..字段? – spupek 2009-07-15 16:32:39

+0

通过使用mx_internal命名空间,我可以设置宽度和高度,它看起来像在工作。但不是那么干净/很好的解决方案。 – spupek 2009-07-15 16:48:55