我正在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,它不会将它放在我预期的屏幕左上角。如何在打开窗口时将窗口定位在我想要的位置?
感谢,
答案 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的填充。