解决PopUpManager弹出窗口RangeError: Error #2006: 提供的索引超出范围

      系统需要用JMS来实现消息提醒,类似于QQ的消息提醒,最初只是一个简单的文件扫描,弹出窗口是一个组件A,每此都实例化一个新的A弹出,点击A上的查看按钮后移除组件A。但是二期定制查询也用到了消息,这就需要连续弹出组件A,弹出三次组件A后flex就报下面的异常:

 

RangeError: Error #2006: 提供的索引超出范围。
	at flash.display::DisplayObjectContainer/addChildAt()
	at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::rawChildren_addChildAt()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:2175]
	at mx.managers::SystemManager/addChild()[C:\autobuild\galaga\frameworks\projects\framework\src\mx\managers\SystemManager.as:1685]
	at mx.managers::PopUpManagerImpl/addPopUp()
	at mx.managers::PopUpManager$/addPopUp()
	at module.portal.desktop::MenuComponent/showSubMenu()[E:\flexworkplace\tpl\src\module\portal\desktop\MenuComponent.mxml:210]

 

 

 

在网上搜了下,原来出现该错误的原因是:PopUpManager不能很好的控制添加到其内控件的层级。每次都addPopUp 到最顶层,程序也不知道到底要增加到多少,最多三次就出现这个错误。

 

解决方法如下:

  

                                                              if(messageComponent.parent==null){
					messageComponent.x=Application.application.width-messageComponent.width;
					messageComponent.y=Application.application.height-messageComponent.height;
					PopUpManager.addPopUp(messageComponent,Application.application as DisplayObject,false);
				}else{
					PopUpManager.bringToFront(messageComponent);
				}

 

messageComponent是要弹出的消息组件。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(qq,Flex,jms,Flash,Adobe)