Flex父窗口内弹出子窗口

父窗口内弹出新的子窗口:

 

(Test.mxml)

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%">
	<mx:Script>
		<![CDATA[
			import mx.managers.PopUpManager;
			public var pop : NewWindows;
			
			public function appNewWindow():void
			{
				PopUpManager.createPopUp(this, NewWindows, true);
			}
		]]>
	</mx:Script>
	<mx:Panel x="71" y="38" width="250" height="200" layout="absolute" id="Windows" title="Windows Control">	
		<mx:Button x="10" y="40" label="New" width="210" id="New" click="appNewWindow()"/>
	</mx:Panel>	
</mx:WindowedApplication>

 

建立一个新Compoment

 

(NewWindows.mxml)

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
	<mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
        ]]>
    </mx:Script>
    <mx:Button x="110" y="98" label="This is a new form!"/>
</mx:Canvas>

 

具体(转载):

 

这个就比较强大了,需要使用一个类,那就是PopUpManager,同样,使用前你需要先导入:
import mx.managers.PopUpManager;
然后你就要创建一个Compoment 作为弹出窗口,这个没什么特别的,创建一个普通的Compoment 就行,这里我创建了一个文件叫做PopWindow,就是一个简单的Canvas,里面就放一个图片。代码如下:
PopWindow.mxml:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="100">
    <mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
        ]]>
    </mx:Script>
    <mx:Image x="0" y="0" source="assets/face.PNG" click="PopUpManager.removePopUp(this)" width="90" height="82"/>
    
</mx:Canvas>

 


其中 removePopUp 是 PopUpManager 的一个方法,就是移除当前弹出的窗口,这里我设置了点击图片的时候就移除弹出窗口。接下来我们在主程序中创建并弹出窗口:

 

 

 var pop : PopWindow = PopWindow(PopUpManager.createPopUp(this,PopWindow,true));

 


这就完成了,这个pop 是一个PopWindow(就是刚才创建的Component的文件名)类型的变量,由于PopUpManager 的 createPopUp 返回的是一个 IFlexDisplayObject,你需要将其强制转换成为PopWindow类型才能赋值给 pop 变量。下面详细说明一下 createPopUp 的这几个参数:


第一个参数是弹出窗口的父窗体,这个相信大家都明白。

第二个参数是弹出窗口的类名,也就是组件的文件名,在Flex中一个MXML文件也对应一个类。PopUpManager是根据这个类来创建弹出对话框。

第三个参数是模态标记。如果是 true ,就创建一个模态对话框;否则创建的就是一个非模态的对话框。PopUpManager 还有一个参数,不过不常用,具体请参考帮助文档。


然后你就可以对弹出对话框操作了,想要移除就用 removePopUp(pop)。另外,如果是非模态的,可能在点击程序其它部分的时候窗口就不见了,但是它并没有移除,怎么让它出来呢?这个时候就需 要 PopUpManager  的另外一个方法: bringToFront(),这个方法可以把窗口放到最前。你可以控制,让程序第一次的时候是创建对话框,以后就是把窗口放到最前。

posted @ 2010-09-27 12:38  noevil  阅读(4839)  评论(0编辑  收藏  举报