BS_*_*_C3 0 apache-flex components
我想在添加一些孩子后获得组件的实际高度.
在调试模式下检查变量选项卡时,我看到2个不同的高度变量:$ height(包含正确的值:138)和height/_height(包含错误的值:10).
我猜显示器没有更新,因此我没有使用component.height获得正确的高度,但是如何获得$ height的值?
感谢您提供的任何帮助=)
此致,BS_C3
@Flextras
再次,非常感谢您的回答!这真的很详细=)
Measuredheight并没有给我我正在寻找的值,而且explicitHeight没有值(NaN).我现在无法测试,所以我无法分辨出未缩放的高度......
这是我的结构:
MainContainer - Canvas
BOX1 - Canvas (height = 100)
BOX2 - Canvas (height = 100)
VariableBox - Canvas (height: depends on the height of it's variable number of children)
Text - TextArea
Run Code Online (Sandbox Code Playgroud)
我需要VariableBox的高度才能定位Text.
该函数如下所示:
updateDisplay(){
for(i;i<list.length;i++){
VariableBox.addChild(new HBox);
}
// reposition Text depending on VariableBox's height
}
Run Code Online (Sandbox Code Playgroud)
我知道我没有提供任何代码,但我现在不在我的工作电脑上> _ <
希望这可以帮助!!
简短回答:使用getMeasuredOrExplicitWidth()和getMeasuredOrExplicitHeight()方法.
更长的答案:你使用什么组件?由于您使用Flex标记了这一点,我将假设它是一个扩展UIComponent的Flex可视组件.
您需要查看一些不同的高度值,但请记住,父母负责确定其子项的大小.将子项添加到组件不一定会改变它的高度或宽度.这取决于您添加孩子的组件是否考虑到孩子.
首先来看看measuredHeight和measuredWidth.这些是使用测量方法计算的组件的优选尺寸值.某些组件(如HBox或VBox)会自动"识别"他们的孩子,并在计算其大小时使用这些组件.其他组件(例如UIComponent)在设置measuredHeight或measuredWidth时不考虑子项.
其次,您可以查看explicitHeight和explicitWidth.如果设置高度或宽度,则设置这些值.如果您使用setActualSize()方法,我不相信这些值已设置.引擎盖下有一些魔法,因此在高度和宽度后面都会屏蔽explicitHeight和explicitWidth.它们通常是相同的,但并非总是如此.
我通常不处理缩放,但如果您需要组件的未缩放高度和宽度,则组件的unscaledWidth和unscaledHeight受保护属性.我相信这些是传递给updateDisplayList()方法的值.
请记住,对于组件在添加或删除子项后调整自身大小,组件必须经历自己的生命周期.所以这段代码:
trace(container.width);
container.addChild(myChild);
trace(container.width);
Run Code Online (Sandbox Code Playgroud)
可能不会更改容器的宽度,因为容器没有机会运行measure(),updateDisplayList()或commitProperties()方法.
如果这没有帮助,那么您将需要更具体并提供一些代码.