【发布时间】:2011-06-27 02:57:42
【问题描述】:
假设我有一个尺寸大于用户屏幕分辨率的应用程序。通常,在添加弹出窗口时,我会调用popupManager.addPopup(),后跟popupManager.centerPopup(),但这可能会导致弹出窗口被添加到用户在屏幕上的可见区域之外。
有没有办法在用户的当前可视区域中间添加一个弹出窗口?
编辑: 这是一个简单的例子:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="3000" height="2000"
creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import spark.components.TitleWindow;
public var myWindow:TitleWindow = new TitleWindow;
protected function creationCompleteHandler(event:FlexEvent):void
{
myWindow.title = "My Title Window";
PopUpManager.addPopUp(myWindow, DisplayObject(FlexGlobals.topLevelApplication), false);
PopUpManager.centerPopUp(myWindow);
}
]]>
</fx:Script>
<s:BorderContainer width="3000" height="2000" backgroundColor="0x000000" />
</s:Application>
示例 1:
+==========================+---------------------+
| Viewable Area | |
| | |
| +-------------+ | |
| | I want the | | |
| | popup to | | |
| | go here. | | |
| +-------------+ | |
| | |
| | |
+==========================+ |
| |
| Rest of Application |
| |
| |
| |
| |
+------------------------------------------------+
示例 2:
+------------------------------------------------+
| |
| Rest of Application |
| |
| |
| +===========================+ |
| | Viewable Area | |
| | | |
| | +-------------+ | |
| | | I want the | | |
| | | popup to | | |
| | | go here. | | |
| | +-------------+ | |
| | | |
| | | |
| +===========================+ |
| |
+------------------------------------------------+
【问题讨论】:
-
我原以为 centerPopUp 将组件置于应用程序可见区域的中心。既然您说“可能导致”而不是“确实导致”,您是否有代码证明情况并非如此,或者您只是想为您认为可能发生的事情做准备?您想将项目相对于 Application 标签的本地坐标居中,但您说它是基于内容坐标居中的。你确定这是正确的吗? livedocs.adobe.com/flex/3/html/…
-
@Flextras,我添加了一个快速代码片段来演示我所指的问题。
标签: apache-flex actionscript-3 popup