我有一个我编写的函数,可以在不滚动的情况下获取应用程序的高度。意味着不需要滚动所需的高度。
这是功能:
private function getContentHeight():Number
{
var height:Number = 0;
for(var i:uint = 0; i<this.numChildren; i++)
{
var d:DisplayObject = this.getChildAt(i) as DisplayObject;
//trace(d.name+":"+d.height);
height += d.height;
}
height += Number(this.getStyle('verticalGap'))*this.numChildren;
height += Number(this.getStyle('paddingTop'));
height += Number(this.getStyle('paddingBottom'));
return height;
}
此功能运行良好,但问题是知道何时调用它。我计划在添加/删除任何孩子后调用它。然而,那仍然太早,因为如果我运行它,我还没有得到正确的高度。我现在的修复是使用Timer在添加/删除子项后大约300毫秒调用该函数,这似乎运行良好,但我认为这是一个非常危险的修复。所以我想知道一个更好的解决方案。我想有一些我可以听的事件会告诉我它何时准备好运行这个功能,我只是不知道会发生什么事?
谢谢!
答案 0 :(得分:1)
首先,看看measuredWidth
的{{1}}和measuredHeight
属性(因此所有控件和容器都具有这些属性),flex已经测量了所需的宽度/高度容器
其次,查看此属性的正确位置是UIComponent
和creationComplete
个事件。在您的情况下,如果您通过programmaticaly添加一些子项,则应在添加孩子后处理updateComplete
事件。