2012-05-28 2 views
0

AIR spark.components.WindowedApplication автоматически изменит размер содержимого, поскольку я вручную растягиваю границы окна или увеличиваю/восстанавливаю его. Но класс spark.components.Window не предоставляет такую ​​функциональность «из коробки»: содержимое окна не изменяет их размер при растяжении/максимизации/восстановлении окна, когда соответствующий экземпляр spark.components.Window.nativeWindow изменяет размеры его границ. Мое приложение AIR необходимо открыть несколько окон и изменить размер. Как я могу заставить их автоматически изменять размер содержимого в соответствии с границами nativeWindow?Содержимое автоматического изменения размера нового окна AIR

ответ

1

Предполагая, что вы имеете в виду spark.components.Window, это основано на скинконтейнере, поэтому не должно быть никаких препятствий для использования процентного макета/ограничения.

<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      width="100%" height="100%"> 

Другие способы ручного управления такими вещами включают прослушивание ResizeEvent со сцены.

+0

К сожалению, процентная ширина и высота не работают с 'spark.components.Window', как мы и ожидаем - просто ничего не происходит. Добавление EventListener для Event.RESIZE для 'stage' отлично подходит для ** up ** - определения размера окна. Когда я пытаюсь ** вниз ** - размер окна, он дергается, но не изменяет размер. Мой код для слушателя: 'private function onStageResize (event: Event): void {width = stage.width; height = stage.height; } ' – Hunternif

+0

Спасибо, Майк, теперь я понял правильный способ прослушивания события изменения размера. – Hunternif

0

Решение состоит в том, чтобы прослушивать событие RESIZE, поступающее из NativeWindow, а затем вручную установить stageWidth и stageHeight на экземпляр Window stage. См. Код ниже.

override public function open(openWindowActive:Boolean=true):void { 
    super.open(openWindowActive); 

    if (nativeWindow) { 
     chromeWidth = nativeWindow.width - this.width; 
     chromeHeight = nativeWindow.height - this.height; 
     nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZE, onNativeResize); 
    } 
} 

private function onNativeResize(event:NativeWindowBoundsEvent):void { 
    stage.stageWidth = event.afterBounds.width - chromeWidth; 
    stage.stageHeight = event.afterBounds.height - chromeHeight; 
} 
Смежные вопросы