控制spark.components.Window的X和Y.

时间:2010-06-18 21:59:56

标签: air flex4 nativewindow

我正在Flex 4中构建一个air应用程序。我正在创建窗口,因为我需要它们在无边框应用程序中。

以下是我在主应用创建中的完整内容

protected function creationCompleteHandler(event:FlexEvent):void
            {

                facade.sendNotification(AppFacade.APP_INIT, this);
                var buttons:NavigatorWindow = new NavigatorWindow();
                var workingSets:WorkingSets = new WorkingSets();
                buttons.addElement( workingSets );
                buttons.width = 115;
                buttons.height =200;
                buttons.maximizable = false;
                buttons.resizable = false;

                buttons.addEventListener(AIREvent.WINDOW_COMPLETE, onWindowComplete);
                buttons.open();


            }

            private function onWindowComplete(event:AIREvent):void
            {
                event.currentTarget.x = 100;
                event.currentTarget.y = 100;
            }

由于某种原因,应用程序在屏幕中间添加窗口,如果我设置窗口的x和y,它不会将它放在我预期的屏幕左上角。如何在打开窗口时将窗口定位在我想要的位置?

感谢,

1 个答案:

答案 0 :(得分:1)

spark.components.Window存在于NativeWindow中,如果你想在屏幕上移动它,你需要定位NativeWindow。这有点令人困惑,因为您也可以将Window放在本机窗口内。您必须在创建完成后进行定位,否则您将获得空引用错误。

如果你创建了一个基于spark.components.Window的组件,你可以这样调用这个窗口:

var win:MyWindow = new MyWindow();  //MXML component
win.height = 150;
win.width = 300;
win.systemChrome = NativeWindowSystemChrome.NONE;
win.type = NativeWindowType.LIGHTWEIGHT;
win.showStatusBar = false;
win.transparent = true;
win.alwaysInFront = true;
win.open(true);

然后在该mxml组件中,设置creationComplete事件处理程序来执行此操作:

var padding:int = 25;
this.nativeWindow.x = Screen.mainScreen.visibleBounds.right - this.width - padding;
this.nativeWindow.y = Screen.mainScreen.visibleBounds.top + padding;

这应该将您的新窗口放在右上角,顶部和右侧有25px的填充。