2009-06-08 15 views
0

私はスクロールせずにアプリケーションの高さを取得する関数を持っています。高さを意味するのは、スクロールする必要がないことです。フレックス:子供の高さを取得...関数を呼び出すとき?

これは、関数である:

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; 
      } 

この機能はうまく動作しますが、問題は、それを呼び出すようにするとき知っています。私はそれから子どもを追加/削除した後にそれを呼び出すことを計画しました。しかし、私はそれを実行する場合、私はまだ正しい高さを取得していないので、それはまだ早すぎる。私が現在持っている修正は、子が追加/削除されてから約300ミリ秒後に関数を呼び出すTimerを使っていますが、うまくいくようですが、これは非常に危険な修正だと思います。だから私はもっと良い解決方法を考えていた。私は、私がこの機能を実行するための準備ができたら、私はちょうどそれがどんなイベントであるのか分からないと聞くことができる何らかのイベントがなければならないと思っています。

ありがとうございます!

答えて

1

まず、measuredWidthmeasuredHeightのプロパティーをUIComponentとしてください(すべてのコントロールとコンテナにこれらのプロパティがあります)。flexはすでにコンテナの幅/高さを測定しています。

第2に、このプロパティを調べる適切な場所はcreationCompleteupdateCompleteです。あなたの場合、子供たちをプログラマティックに追加する場合は、子供を追加した後でupdateCompleteイベントを処理する必要があります。

関連する問題