flex用单例关闭窗口

来源:互联网 发布:本西蒙斯捏脸数据 编辑:程序博客网 时间:2024/04/28 20:32

在flex开发的时候,弹出窗口有时候可由父窗口或当前窗口关闭,如果想点其它地方的时候,也能关闭窗口,那么可以在窗口打开时,用单例的某个属性(例:widgetObj)来保存当前窗口,当需要在其它地方关闭窗口的时候,调用这个单例,用PopUpManager.removePopUp(GlobeConfig.getInstance().widgetObj as IFlexDisplayObject);,并将属性widgetObj设置为null即可。


先定义一个单例,保存当前窗口类GlobeConfig.as/GlobeConfig.mxml

<?xml version="1.0" encoding="utf-8"?><s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"         xmlns:s="library://ns.adobe.com/flex/spark"         xmlns:mx="library://ns.adobe.com/flex/mx">        <fx:Script>        <![CDATA[                                private static var instance:GlobeConfig;            //用来保存当前窗口                        public var widgetObj:Object =null;                        public static function getInstance():GlobeConfig{                if(null == instance){                    instance = new GlobeConfig();                    instance.init();                }                return instance;            }                    ]]>    </fx:Script>        <fx:Declarations>        <!-- 将非可视元素(例如服务、值对象)放在此处 -->    </fx:Declarations></s:Group>



在弹出窗口的时候,将窗口赋给widgetObj。
var w1:VideoOpenWindow1;w1 =  new VideoOpenWindow1();//将前当窗口赋给widgetObj !!!GlobeConfig.getInstance().widgetObj=w1;w1.videoIDArray = videoIDArray;w1.parentObj = this;PopUpManager.addPopUp(w1,this,false);PopUpManager.centerPopUp(w1);w1.x = Capabilities.screenResolutionX/3;w1.y = Capabilities.screenResolutionY/10;

                   
关闭窗口的时候用:
protected function closeWindow():void{    //map.infoWindow.hide(); //如果用到地图的话    if(GlobeConfig.getInstance().widgetObj!=null){        PopUpManager.removePopUp(GlobeConfig.getInstance().widgetObj as IFlexDisplayObject);        GlobeConfig.getInstance().widgetObj=null;    }}


如果不想每个mxml中写一个closeWindow()方法,可以新建一个文件ClosePopWindow.as,以后用到它的时候,这样调用:
new com.flexdms.pojo.sys.ClosePopWindow().closePopWindow();

ClosePopWindow.as

package com.flexdms.pojo.sys{    import com.flexdms.manage.GlobeConfig;    import mx.core.IFlexDisplayObject;    import mx.managers.PopUpManager;    [Bindable]    public class ClosePopWindow    {        public function ClosePopWindow()        {        }        public function closePopWindow():void {            if(GlobeConfig.getInstance().widgetObj!=null){                PopUpManager.removePopUp(GlobeConfig.getInstance().widgetObj as IFlexDisplayObject);                GlobeConfig.getInstance().widgetObj=null;            }        }                    }}


转载请注明:http://blog.csdn.net/paincupid/article/details/44645425

0 0
原创粉丝点击