Flex里使用PopUpManager.createPopUp(parent, class, modal [, initobj, outsideEvents])创建父一个子窗口,该函数的参数说明如下:
parent 一个引用,引用弹出窗口所在的窗口。
class 一个引用,引用要创建的对象的类。
modal 一个布尔值,它表明该窗口是 (true) 否 (false) 是模式的。
initobj 一个包含初始化属性的对象。此参数是可选的。
outsideEvents 一个布尔值,指明在用户单击窗口以外的区域时是 (true) 否 (false) 触发事件。此参数是可选的。
其中,前三个参数是必须的,后两个是可选的。第二个参数要和你的mxml文件名一致,第三个参数如果选择是则不允许弹出窗口没关闭前操作父窗口,反之则允许。
首先我们创建一个页面,关键代码如下:
<mx:Button label="Show Window" click="showWindow(false)" width="150"/>
<mx:Button label="Show Modal Window" click="showWindow(true)" width="150"/>
function showWindow(modal)
{
var popup = mx.managers.PopUpManager.createPopUp(_root , login , modal, {deferred: true});
}
然后我们创建一个TitleWindow,注意虽然也是mxml文件,但是它的定级元素不是Application而是TitleWindow,其余的地方和以前没什么两样了。
下面介绍子父窗口的数据交换。
当子窗口被创建的时候父窗口就获得了一个子窗口的实例,注意我用红子标出的变量。我们可以用该变量引用子窗口内定义的全局变量,例如我在子窗口中做如下定义:var name:String = "哈哈";。在父窗口中可以使用popup.name引用该变量。
同样,在子窗口中我们可以使用"parent"来引用父窗口中定义的变量,例如我在父窗口中定义var age:String="24";。在子窗口中可以使用parent.age引用这个变量。