1
我想通過按下按鈕顯示圖像上的所有彈出窗口(已單獨彈出並單獨關閉),並希望關閉另一個按鈕上的所有窗口。任何幫助表示讚賞。如何關閉Flex中的所有彈出窗口?
我想通過按下按鈕顯示圖像上的所有彈出窗口(已單獨彈出並單獨關閉),並希望關閉另一個按鈕上的所有窗口。任何幫助表示讚賞。如何關閉Flex中的所有彈出窗口?
試試這個:
for (var i:int = systemManager.popUpChildren.numChildren - 1; i >= 0; i--)
{
var popup:IFlexDisplayObject = IFlexDisplayObject(systemManager.popUpChildren.getChildAt(i));
PopUpManager.removePopUp(popup);
}
試試這個:
package com.devahead.utils
{
import flash.display.DisplayObject;
import mx.collections.ArrayCollection;
import mx.core.Application;
//import mx.core.FlexGlobals; // NOTE: use this import for Flex 4.x and higher
import mx.core.IChildList;
import mx.core.UIComponent;
import mx.managers.PopUpManager;
public class PopUpUtils
{
/**
* Returns all the popups inside an application. Only the popups whose base
* class is UIComponent are returned.
*
* @param applicationInstance
* Application instance. If null, Application.application is used.
* @param onlyVisible
* If true, considers only the visible popups.
* @return All the popups in the specified application.
*/
public static function getAllPopups(applicationInstance: Object = null,
onlyVisible: Boolean = false): ArrayCollection
{
var result: ArrayCollection = new ArrayCollection();
if (applicationInstance == null)
{
// NOTE: use this line for Flex 4.x and higher
//applicationInstance = FlexGlobals.topLevelApplication;
// NOTE: use this line for Flex 3.x and lower
applicationInstance = Application.application;
}
var rawChildren: IChildList = applicationInstance.systemManager.rawChildren;
for (var i: int = 0; i < rawChildren.numChildren; i++)
{
var currRawChild: DisplayObject = rawChildren.getChildAt(i);
if ((currRawChild is UIComponent) && UIComponent(currRawChild).isPopUp)
{
if (!onlyVisible || UIComponent(currRawChild).visible)
{
result.addItem(currRawChild);
}
}
}
return result;
}
/**
* Checks if an application has visible popups. Only the popups whose base
* class is UIComponent are considered.
*
* @param applicationInstance
* Application instance. If null, Application.application is used.
* @return True if there are visible popups in the specified application,
* false otherwise.
*/
public static function hasVisiblePopups(applicationInstance: Object = null): Boolean
{
if (applicationInstance == null)
{
// NOTE: use this line for Flex 4.x and higher
//applicationInstance = FlexGlobals.topLevelApplication;
// NOTE: use this line for Flex 3.x and lower
applicationInstance = Application.application;
}
var rawChildren: IChildList = applicationInstance.systemManager.rawChildren;
for (var i: int = 0; i < rawChildren.numChildren; i++)
{
var currRawChild: DisplayObject = rawChildren.getChildAt(i);
if ((currRawChild is UIComponent) && UIComponent(currRawChild).isPopUp
&& UIComponent(currRawChild).visible)
{
return true;
}
}
return false;
}
/**
* Closes all the popups belonging to an application. Only the popups
* whose base class is UIComponent are considered.
*
* @param applicationInstance
* Application instance. If null, Application.application is used.
* @return The list of the closed popups.
*/
public static function closeAllPopups(applicationInstance: Object = null): ArrayCollection
{
var allPopups: ArrayCollection = getAllPopups(applicationInstance);
for each (var currPopup: UIComponent in allPopups)
{
PopUpManager.removePopUp(currPopup);
}
return allPopups;
}
}
}
我是從以下幾點: http://www.devahead.com/blog/2009/12/getting-all-the-popups-in-a-flex-application/
@Constantiner嗨,我得到'systemManager.popUpChildren.numChildren價值爲零。所以循環沒有被執行。 –
對不起,錯過了關於打開窗口的觀點。所以你需要先打開所有的窗口。 – Constantiner
Hi @ Constantiner,雖然他們被打開,但是孩子的數量卻顯示爲零。 –