gpt4 book ai didi

apache-flex - Flex 弹出窗口管理器,在弹出窗口外按下鼠标可删除弹出窗口

转载 作者:行者123 更新时间:2023-12-03 01:49:29 25 4
gpt4 key购买 nike

如果您通过以下方式创建弹出窗口:

PopUpManager.addPopUp( popup, this, false );PopUpManager.bringToFront( 弹出 );

它将创建一个弹出窗口并将其置于任何其他视觉片段之上。不过我有一个问题。即使用户与后台交互,此“弹出窗口”也需要保持打开状态。

我会使用模态,但我需要与背面交互的能力。有什么方法可以告诉弹出窗口管理器在用户单击弹出窗口时不要删除弹出窗口吗?

谢谢!

最佳答案

这里有一个帮助器类可以帮助您(仅在 Flex 4 中测试,但可能也可以针对 Flex 3 进行更改):



导入 flash.display.DisplayObject;
导入 flash.events.Event;
导入 flash.events.MouseEvent;

导入 mx.core.mx_internal;
导入 mx.managers.ISystemManager;
导入 mx.managers.systemClasses.ActiveWindowManager;

使用命名空间 mx_internal;

公共(public)类 PopupHelper
{
私有(private)变量弹出:DisplayObject;
私有(private) var systemManager : ISystemManager;
公共(public)函数 PopupHelper(popup : DisplayObject, systemManager : ISystemManager) : void
{
this.popup = 弹出窗口;
this.systemManager = 系统管理器;
}
公共(public)函数forceToFront():无效
{
systemManager.addEventListener(MouseEvent.MOUSE_DOWN, onSystemMouseDown);
popup.addEventListener(Event.REMOVED_FROM_STAGE, onPopupRemoved)
}
私有(private)函数 onSystemMouseDown(e : MouseEvent) : void
{
BringToFront(弹出窗口);
}
私有(private)函数 onPopupRemoved(e : 事件) : void
{
popup.removeEventListener(Event.REMOVED, onPopupRemoved);
systemManager.removeEventListener(MouseEvent.MOUSE_DOWN, onSystemMouseDown);
}
私有(private)函数 BringToFront(popup : DisplayObject) : void
{
var windowManager : ActiveWindowManager = systemManager.getImplementation("mx.managers::IActiveWindowManager") as ActiveWindowManager;
var index : int = systemManager.getChildIndex(popup);
var newIndex : int = 索引;
var n : int = windowManager.forms.length;
for (var j : int = 0; j < n; j++)
{
var f : DisplayObject = windowManager.forms[j];
if (systemManager.contains(f))
if (systemManager.getChildIndex(f) > 索引)
newIndex = Math.max(systemManager.getChildIndex(f), newIndex);
}
if (newIndex > 索引)
{
systemManager.setChildIndex(popup, newIndex);
}
}
}

这是一个测试示例:



 import helperClasses.PopupHelper;
导入 mx.managers.PopUpManager;

导入spark.components.TitleWindow;

公共(public)函数 showPopup() : void
{
var popup1 : TitleWindow = new TitleWindow();
popup1.title = "弹出窗口 1";
新的 PopupHelper(popup1, systemManager).forceToFront();
var popup2 : TitleWindow = new TitleWindow();
popup2.title = "弹出窗口 2";
PopUpManager.addPopUp(popup1, this, false);
PopUpManager.addPopUp(popup2, this, false);
PopUpManager.bringToFront(popup1);
弹出1.x = 20;
弹出1.y = 20;
}

关于apache-flex - Flex 弹出窗口管理器,在弹出窗口外按下鼠标可删除弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com