FLEX 通过单例模式,轻松关闭所有PopUpManager弹出的窗口

怎么关闭所有PopUpManager弹出的窗口?

 

这一个貌似很简单,缺又凭空增加麻烦和工作量的事情.

 

如果你按照下面这种模式,那么关闭所有弹出窗口又变得那么简单.

 

需求: 假设当应用程序出现错误.需要将用户弹出窗口全部关闭.恢复到初始状态.

 

 

实现思路:

 

1. 定义单例类. 用来保存所有弹出窗口的数组

 

2. 将弹出事件封装,由其去创建弹出窗口.和保存到数组对象

 

两个重要类:

 

PopUpEffect.as(弹出事件封装类)

 

 

package com.javaeye.jhaij
{
	
	
	
	import mx.managers.PopUpManager;
	
	public class PopUpEffect   
	{   
		
		public function PopUpEffect()   
		{   
		}   
		
		public static function show(parent:*,control:*,modal:Boolean=false):void   
		{   
			PopUpManager.addPopUp(control,parent,modal);   
			PopUpManager.centerPopUp(control);   
			PopupModellocator.getInstance().push(control);
			
		}   
		
		public static function hide(control:*):void   
		{   
			PopUpManager.removePopUp(control);
			PopupModellocator.getInstance().pop(control);
		}   
	}   
}  

 

PopupModellocator.as (保存数组对象的单例类,关闭全部调用)

 

package com.javaeye.jhaij
{
	import com.adobe.utils.ArrayUtil;

	[Bindable]
	public class PopupModellocator
	{
		
		private static var instance:PopupModellocator;
		//保存pop出来的窗口
		private var popupArray:Array ;
		
		
		public function DataGridModellocator()
		{
			if(instance==null){
				instance = this;
			}
		}
		
		public static function getInstance():PopupModellocator{
			if(instance==null){
				instance = new PopupModellocator();
			}
			return instance;
		}
		
		public function push(control:*):void{
			if(!popupArray){
				popupArray = new Array;
			}
			popupArray.push(control);
		}
		
		public function pop(control:*):void{
			if(popupArray){
				ArrayUtil.removeValueFromArray(popupArray,control);
			}
		}
		
		public function popAll():void{
			if(popupArray&&popupArray.length>0){
				PopUpEffect.hide(popupArray[popupArray.length-1]);
				popAll();
			}else{
				return;
			}
		}
	}
}

 

 

使用方法:

 

a. 弹出窗口创建入口: PopUpEffect.show

 

var p:PopWindow = new PopWindow;
				PopUpEffect.show(this,p);
				p.setFocus();
 

b. 弹出窗口单个关闭调用:  PopUpEffect.hide

 

close="PopUpEffect.hide(this);"

 

c. 弹出窗口全部关闭调用: popAll - 注意是PopupModellocator的方法

 

PopupModellocator.getInstance().popAll();

 

 

依赖类库:

 

as3corelib.swc

 

工程编译是用sdk3.5编译的. 你可以修改成4 因为都是as文件.完全向上兼容.

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值