Flexでは、ダイアログをPopUpManagerを使って作成することができる。
また、作成時に画面の中央にダイアログを表示したい場合には
private function createDialog():void{
var popup:IFlexDisplayObject = PopupManager.createPoopup([親画面],[Dialogのクラス],true);
PopupManager.centerPopup(popup);
}
のようにすればよい。
ここで、[Dialogのクラス]は、通常MXMLのようなものをさすと思う。
でも、小さい画面で開いていたが、ダイアログが見えないので画面を最大にしたとしても、
このままではダイアログは中央には移動しない。
ここで、親画面のリサイズとともにダイアログも中央の移動してほしい場合には
画面の更新とともに、以下のようなメソッド(関数)を作成しておき実行する。
private function updateEnd():void{
if(_curPopup){
PopUpManager.centerPopUp(_curPopup);
}
}
ここで、_curPopupは先の作成時の処理を
private var _curPopup:IFlexDisplayObject = null;
private function createDialog():void{
_curPopup = PopupManager.createPoopup([親画面],[Dialogのクラス],true);
PopupManager.centerPopup(_curPopup);
}
のように変えておけばよい。
また、画面の更新時の処理はMXMLであれば、
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" updateComplete="updateEnd()" >
のように、updateCompleteのプロパティ(イベント)を使うのが楽だ。
ちなみに、このイベントは正確にはmx.events.FlexEvent.UPDATE_COMPLETEになるので、AS内であればこのイベントで処理をする。

