2009-06-08 3 views
0

У меня есть функция, которую я написал, которая получает высоту приложения без прокрутки. Значение высоты должно быть не для прокрутки.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; 
      } 

Эта функция работает хорошо, но проблема зная, когда это называют. Я планировал называть его после добавления/удаления из него любых детей. Однако это все еще слишком рано, потому что я не получаю правильную высоту, но если я запустил ее. Исправление, которое я имею в настоящее время, это использование таймера для вызова функции около 300 миллисекунд после того, как ребенок добавлен/удален, который, кажется, работает хорошо, но я думаю, что это очень рискованное исправление. Поэтому мне было интересно, как лучше. Я думаю, что должно быть какое-то событие, которое я могу слушать, это скажет мне, когда он будет готов для выполнения этой функции, я просто не знаю, какое это событие будет?

Спасибо!

ответ

1

Прежде всего, посмотрите на measuredWidth и measuredHeight свойства UIComponent (так что все элементы управления и контейнеры обладают этими свойствами), гибкий уже меры, необходимые ширина/высота контейнеров.

Во-вторых, подходящее место для поиска этой недвижимости creationComplete и updateComplete событий. В вашем случае, если вы добавите некоторых детей программным образом, вы должны обработать событие updateComplete после того, как вы добавите детей.

Смежные вопросы