2010-03-16 59 views
1

我试图在主应用程序窗口的中间放置一个弹出窗口(TitleWindow)。我如何将弹出窗口的坐标设置为主应用程序窗口? 我尝试了localToGlobal函数,但没有运气,我只是无法获得主窗口x和y。在主窗口的中间放置弹出窗口

在此先感谢, 乌兹。

回答

2

Adobe Docs

只需调用在CreationComplete事件的TitleWindow中的centerPopUp方法。

private function handleCreationComplete():void { 
    // Center the TitleWindow container 
    // over the control that created it. 
    PopUpManager.centerPopUp(this); 
} 

如果您正在从一个方法中的弹出窗口中,你也可以尝试:

public function openWindow(event:MouseEvent):void { 
    myPopUp = new TextArea(); 
    myPopUp.width= 220; 
    myPopUp.height= 150; 
    myPopUp.text = "Hold down the Shift key, and " + 
    "click in the TextArea to close it."; 
    myPopUp.addEventListener(MouseEvent.CLICK, closeWindow); 
    PopUpManager.addPopUp(myPopUp, this, true); 
    PopUpManager.centerPopUp(myPopUp); 
} 

编辑:您也可以尝试:

PopUpManager.centerPopUp(Application.application as DisplayObject); 

,或者如果组件直接在您的应用程序的主要阶段

PopUpManager.centerPopUp(this.parent); 

第二个编辑:如果您使用的PopUpManager.addPopUp方法来启动弹出式窗口,只是改变从this第二个参数this.parent(或任何部分你喜欢)。第二个参数告诉PopUpManager你弹出的父项是什么。查看Adobe Live Docs了解更多信息。

PopUpManager.addPopUp(myPopUp, this.parent, true); 
+0

我做到了,但它将弹出窗口的中心相对于其父窗口(我忘了提及主窗口不是弹出窗口的父窗口,我在窗口中有几个窗口在窗口中)。我所需要的是以某种方式获得绵窗的属性。 感谢您的回答, Uzi。 – 2010-03-17 06:16:00

+0

我根据你的意见编辑了我的答案。将来,如果您可以发布一些代码,它将帮助我们为您的问题提供更具体的解决方案。 我希望我能帮到你! :) – 2010-03-17 15:10:21

0
myPopUp.x = (Application.application.width - myPopUp.width)/2 
myPopUp.y = (Application.application.height - myPopUp.height)/2 
+0

这也会起作用,但是为什么在PopUpManager已经给我们提供了一种中心弹出窗口的方法时通过额外的工作呢? – 2010-03-17 15:20:00

+0

我认为PopUpManager.centerPopUp将popUp作为参数,而不是父级。有什么我失踪? – Nishu 2010-03-17 15:35:35

+0

使用PopUpManager.addPopUp创建弹出窗口时,可以指定弹出窗口的父控件。因此,当您调用centerPopUp方法时,它将自动将其自身置于其父控件中间。 – 2010-03-18 18:24:25

0

@uzi orgad 我认为这将是适合你,试试这个

var popup:Object ; 
popup = PopUpManager.createPopUp(
         FlexGlobals.topLevelApplication as DisplayObject, 
         popupname, true); 
PopUpManager.centerPopUp(popup as mx.core.IFlexDisplayObject); 

FlexGlobals.topLevelApplication作为的DisplayObject指向主application.So弹出出现在中间的应用程序