Flex 4:如何在使用100%和上/下/左/右时获得组的实际宽度?

时间:2010-07-19 15:14:23

标签: flex actionscript flex4

我有一个宽度/高度为100%的应用程序。我有几个嵌套组,他们的测量都没有设置,而是定义为top = 5或left / right = 10等。

我试图获得一个应该是390的组的实际情况。我已经将hf嵌入代码中的swf对象大小设置为400,并且该组位于另一个宽度= 100%的组中。该组有一个左= 5和右= 5所以宽度应该是400-10。当我显示该组的.width和.measuredWidth时,宽度始终为400。

我对flex / flash很新。我是否需要明确设置宽度才能获得子容器的宽度?我在这里做错了吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

组件的百分比大小是在父级updateDisplayList()计算的,因此只能通过width& height

方法getExplicitOrMeasuredWidth/Height()可能会返回以下内容:

  1. 显式宽度/高度
  2. 或者

    1. 当模式设置为Wrap时测量的宽度/高度。这是在组件的measure()
    2. 期间计算的

      如果您不打算覆盖小节或updateDisplayList,则根本不应使用getExplicit...

答案 1 :(得分:1)

使用getExplicitOrMeasuredWidth()的{​​{1}}方法。如果设置(例如,宽度=“700”),则返回显式宽度,否则返回测量宽度(以像素为单位)。如果设置了百分比宽度,则返回实际测量的宽度。

答案 2 :(得分:1)

事实证明,有一个内部组,其路径正在抛弃布局。当我删除这个元素时,.width属性就像以前一样工作。

让我感到惊讶的是,当.width返回390时,.measuredWidth和getExplicitOrMeasuredWidth()都返回10。

答案 3 :(得分:0)

我相信它正在回归正确的价值。如果您有一个应用程序A,宽度为400.然后将组B放入其中,宽度为100%,并添加一些填充。 B组确实是400,因为它一直延伸到应用程序的边缘。但是,通过给它左/右/填充/无论如何,反过来,它可以调整子项,使它们不是那么靠近边缘。你可能需要寻找B组孩子的最大宽度才能得到你想要的东西。

更新

根据文件:

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

使用基于约束的布局会覆盖widthpercentWidth。尝试使用measuredWidth,但是在组件在失效期间有时间完成measure()阶段之前可能无法填充...