【问题标题】:get width of dynamically created custom uicomponent获取动态创建的自定义 uicomponent 的宽度
【发布时间】:2010-11-11 00:23:06
【问题描述】:

我有一些从 UIComponent 派生的自定义组件。我重载了 updateDisplayList,因此它们具有自定义外观。我创建了一个布局器来布置这些自定义组件,但要正确放置它们,我必须知道自定义组件的宽度、高度。它们是动态创建的。在它们全部创建之后(每次都触发creationCompleted事件),我尝试布置它们,但宽度/高度属性仍然为0。 在布局过程之前,我还尝试将它们添加到画布中。

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

谢谢


编辑:

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

【问题讨论】:

    标签: apache-flex size uicomponents


    【解决方案1】:

    如果您从 UIComponent 继承,而不是从其子类之一,您可能需要确保您正在实现 measure() 方法等。在此处查看 Flex 文档以获取有关实现您自己的 UIComponents 的更多信息——这里有大量信息可供阅读,但如果您直接从 UIComponent 派生,您可能应该知道这些内容:

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

    希望对您有所帮助!您也可以尝试发布一些代码,这样我们就有了更具体的内容。但很有可能,您只是没有实现一些您应该实现的东西来检索这些值。 (你的直觉是正确的——你不应该为了得到你需要的东西而深入研究 mx_internal。)

    【讨论】:

    • 添加自定义组件的位置也可能会有所不同。它们是在 createChildren 方法、updateDisplayList 方法还是 MXML 中添加的?但我怀疑问题在于孩子们没有“衡量”步骤。
    【解决方案2】:

    也许这行得通?

    component.getExplicitOrMeasuredWidth() 
    component.getExplicitOrMeasuredHeight()
    

    【讨论】:

    • 这将返回明确设置或测量的宽度,但两者都为零。只有 $width/$height 字段在创建和绘制后包含有用的内容。我可以以某种方式使用这些字段,还是强制组件将它们的值写入宽度/高度/测量宽度..字段?
    • 通过使用 mx_internal 命名空间,我可以设置宽度和高度,看起来它正在工作。但不是那么干净/好的解决方案。
    猜你喜欢
    • 2021-10-10
    • 2015-05-27
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多