Flex:获得孩子的高度......什么时候打电话?

时间:2009-06-08 20:27:43

标签: flex

我有一个我编写的函数,可以在不滚动的情况下获取应用程序的高度。意味着不需要滚动所需的高度。

这是功能:

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毫秒调用该函数,这似乎运行良好,但我认为这是一个非常危险的修复。所以我想知道一个更好的解决方案。我想有一些我可以听的事件会告诉我它何时准备好运行这个功能,我只是不知道会发生什么事?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,看看measuredWidth的{​​{1}}和measuredHeight属性(因此所有控件和容器都具有这些属性),flex已经测量了所需的宽度/高度容器

其次,查看此属性的正确位置是UIComponentcreationComplete个事件。在您的情况下,如果您通过programmaticaly添加一些子项,则应在添加孩子后处理updateComplete事件。