flex用单例关闭窗口

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值