У меня такая проблема: я создаю контейнер и его содержимое во время выполнения. Вот грубая структура:
- VBox
---- Форма
------- FormItem
...
------- FormItem
---- ControlBar
Я установил maxHeights для контейнера form
, чтобы он оставался в пределах экрана. Но когда я получаю вертикальную полосу прокрутки, также появляется горизонталь (кажется, что для этого VScrollBar недостаточно места).
Чтобы избежать этой проблемы, я создал прослушиватель для появления горизонтальной прокрутки, поэтому, если он появится, я немного увеличу контейнер, поэтому он будет нормально работать на другой полосе прокрутки:
form.addEventListener(Event.ADDED, function(event:Event):void{
if(event.target is HScrollBar){
while(form.horizontalScrollBar && form.horizontalScrollBar.visible && !(form.width > form.maxWidth)){
form.width += 10;
form.validateDisplayList();
}
}
});
Я пробовал также validateNow
и другие подобные методы. Что у меня здесь:
1. HScrollBar
добавляется.
2. Увеличим немного ширину контейнера, чтобы он исчез.
3. Когда он исчезает, проверка выдает исключение нулевого указателя, когда пытается измерить несуществующую полосу прокрутки. Я также пытался добавить validateProperties
до проверки, но это тоже не сработало.
Может кто-нибудь помочь избавиться от этого надоедливого свитка? :)