1.如果使用MVC框架,相信这并不是一个问题。而如果没有使用的话,可以用类似的方法设置一个单例,子窗口和父窗口通过这个单例来交互消息,如果需要解耦,请发送自定义事件。总之,只要按照MVC思路来做就可以了。
2.类似JS,在子窗口的构造函数里增加一个参数,将父窗口传参进去。MXML没有构造函数,用一个属性来保存父窗口引用也可以。
3.无论是createPopUp还是addPopUp,他们都有一个返回值,得到子窗口的实例。可以对这个实例监听remove事件,并在这个事件中直接读取子窗口需要返回给父窗口的属性。(记得要将这个事件最终移除)
- <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="absolute">??
- ?<mx:Panel?x="94"?y="178"?width="503"?height="347"?layout="absolute">??
- ??<mx:TextInput?x="134"?y="64"?id="tit_usr"?text="username"/>??
- ??<mx:TextInput?x="134"?y="125"?id="tit_psw"?text="password"/>??
- ??<mx:Button?x="171"?y="209"?label="Submit"?click="mytw_click()"/>??
- ?</mx:Panel>??
- ?<mx:Script>??
- ??<!--[CDATA[??
- ?import?mx.containers.TitleWindow;??
- ?import?mx.managers.PopUpManager;??
- import?mx.controls.Text;??
- private?var?tw:titlewindow=new?titlewindow();??
- private?function??mytw_click():void{??
- ??if(tw.visible){??
- ???PopUpManager.removePopUp(tw);??
- ???}??
- ???PopUpManager.addPopUp(tw,this);??
- ???PopUpManager.centerPopUp(tw);??
- ???tw.addEventListener("tw_click",update);??
- private?function?update(event:Event): ??tit_usr.text=tw.tw_usr.text;??
- ??tit_psw.text=tw.tw_psw.text;??
- ??PopUpManager.removePopUp(tw);??
- ?}??
- ??]]-->??
- ?</mx:Script>??
- ?</mx:Application>??
弹出窗口:
- <mx:TitleWindow?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="absolute"?width="498"?height="368"?showCloseButton="true"?close="PopUpManager.removePopUp(this)">??
- ?<mx:Label?x="96"?y="67"?text="username"?width="97"?height="26"/>??
- ?<mx:Label?x="96"?y="128"?text="password"?width="97"?height="24"/>??
- ?<mx:TextInput?x="217"?y="65"?id="tw_usr"/>??
- ?<mx:TextInput?x="217"?y="126"?id="tw_psw"/>??
- ?<mx:Button?x="228"?y="239"?label="Click"?click="btn_click()"/>??
- ?<mx:Script>??
- ??<!--[CDATA[??
- ?import?mx.managers.PopUpManager;??
- ?import?mx.controls.Text;??
- ???
- private?function?btn_click():void{??
- ??dispatchEvent(new?Event("tw_click"));??
- ?}??
- ??]]-->??
- ?</mx:Script>??
- </mx:TitleWindow>??
文章来源于:http://www.voidcn.com/article/p-nuxmsbao-bcb.html