PopUpManager 類主要是用來彈出新的窗口或者對話框。我們主要使用它的一些方法來創建UI窗口,並設置窗口的彈出方式,以及刪除窗口。
PopUpManager 類彈出窗口的2種方式如下:
1 使用 addPopUp 。(先new出來對象,設置好表現形式,然後在選擇彈出來的方式。一定要注意new對象與彈出方式的先後順序),核心代碼如下:
var label:Label = new Label();
label.text = "Hello world";
titleWindow = new TitleWindow();
titleWindow.title = "Custom title";
titleWindow.showCloseButton = true;
titleWindow.width = 240;
titleWindow.height = 180;
titleWindow.addEventListener(CloseEvent.CLOSE, titleWindow_close);
titleWindow.addChild(label);
PopUpManager.addPopUp(titleWindow, this, true);
PopUpManager.centerPopUp(titleWindow);
//如下代碼。居中彈出。
titleWindow.x=FlexGlobals.topLevelApplication.stage.stageWidth/2- titleWindow.width/2;
titleWindow.y=FlexGlobals.topLevelApplication.stage.stageHeight/2- titleWindow.height/2;
addPopUp方法的一些參數說明:parent一個引用,引用彈出Flex窗口所在的Flex窗口。
class一個引用,引用要創建的對象的類。
modal一個布爾值,它表明該Flex窗口是(true)否(false)是模式的。
initobj一個包含初始化屬性的對象。此參數是可選的。
outsideEvents一個布爾值,指明在用戶單擊Flex窗口以外的區域時是(true)否(false)觸發事件。此參數是可選的。
其中,前三個參數是必須的,後兩個是可選的。第二個參數要和你的mxml文件名一致,第三個參數如果選擇是則不允許彈出Flex窗口沒關閉前操作父Flex窗口,反之則允許。
當子Flex窗口被創建的時候父Flex窗口就獲得了一個子Flex窗口的實例,例如我在子Flex窗口中做如下定義:varname:String="哈哈";。在父Flex窗口中可以使用popup.name引用該變量。同樣,在子Flex窗口中我們可以使用"parent"來引用父Flex窗口中定義的變量,例如我在父Flex窗口中定義varage:String="24";。在子Flex窗口中可以使用parent.age引用這個變量。2 使用createPopUp。(先設置好彈出方式,然後在new出來一個TitleWindow的對象,然後通過此對象設置他的變現形式。)
var label:Label = new Label();
label.text = "Hello world";
titleWindow = new TitleWindow();
titleWindow = TitleWindow(PopUpManager.createPopUp(this,TitleWindow,true));
titleWindow.title = "Custom title";
titleWindow.showCloseButton = true;
titleWindow.width = 240;
titleWindow.height = 180;
titleWindow.addChild(label);
titleWindow.addEventListener(CloseEvent.CLOSE, titleWindow_close);
PopUpManager.centerPopUp(titleWindow);
//如下代碼。居中彈出。
titleWindow.x=FlexGlobals.topLevelApplication.stage.stageWidth/2- titleWindow.width/2;
titleWindow.y=FlexGlobals.topLevelApplication.stage.stageHeight/2- titleWindow.height/2;
當然還可以,使彈出的窗口,進行全屏顯示,如下:
//全屏顯示
titleWindow.explicitWidth=FlexGlobals.topLevelApplication.stage.stageWidth;
titleWindow.explicitHeight=FlexGlobals.topLevelApplication.stage.stageHeight;