我注意到在Windows中,如果您最大化窗口,则在再次取消最大化之前无法调整窗口大小。这似乎是一种正常的行为,所以当窗口最大化时,我想删除调整大小的抓手。
目前我找不到一个属性来检测窗口是否最大化,虽然我可以在我的控制器中添加一个布尔值,但它不一定会捕获从操作系统中最大化的请求。
因此,如果您知道测试窗口是否最大化的可靠方法,请告诉我。
在相关的说明中,我使用自定义chrome,当我最大化窗口时,它与windows任务栏重叠。我可以想到黑客可以检测可用的屏幕尺寸(使用透明系统镀铬窗口),但知道更好的方法会很好。
由于
罗布
答案 0 :(得分:3)
在init方法中的应用程序(MXML)中,通常调用creationComplete:
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init()" >
添加以下代码:
this.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGE, trackState);
方法如下:
public function trackState(event:NativeWindowDisplayStateEvent):void
{
if (event.afterDisplayState == NativeWindowDisplayState.MAXIMIZED)
{
isMaximised = true;
} else {
isMaximised = false;
}
}
答案 1 :(得分:2)
由于TheBrain的一些指示,我已经弄清楚如何做到最好。
首先,您需要关注要控制的窗口的调整大小事件:
NativeApplication.nativeApplication.activeWindow.addEventListener(NativeWindowBoundsEvent.RESIZE, onWindowResize);
然后处理该事件以决定窗口是否最大化:
public function onWindowResize(event:NativeWindowBoundsEvent):void
{
if (event.afterBounds.height >= Screen.mainScreen.visibleBounds.height && event.afterBounds.width >= Screen.mainScreen.visibleBounds.width)
isMaximised = true;
else
isMaximised = false;
}
然后您需要捕获或创建自己的最大化按钮,并在单击时执行以下代码:
if (isMaximised)
{
var bounds:Rectangle = Screen.mainScreen.visibleBounds;
NativeApplication.nativeApplication.activeWindow.bounds = bounds;
}
else
{
NativeApplication.nativeApplication.activeWindow.bounds = new Rectangle(100, 100, 500, 600);
}
您可以将边界修改为过度最大化(这对于带阴影的自定义镶边窗口很方便),如果最大化按钮在已经最大化时(或者什么也不做),您还可以将应用程序设置为重置为默认大小)。
我遇到了关于何时分配窗口调整大小列表器的问题,并且每次单击最大化按钮时都会删除并添加它。这有点矫枉过正,但也不算太糟糕。
答案 2 :(得分:1)
Win32 API调用将为您执行此操作:
BOOL IsZoomed(HWND hWnd);
答案 3 :(得分:0)
您可以使用like this来挂钩maximize()
事件吗?
答案 4 :(得分:0)
要从屏幕获取实际可用空间,请使用flash.display.Screen类,或者可以使用systemMaxSize()返回操作系统允许的最大窗口大小。为了最大化,您可以在最大化/最小化/恢复时显示窗口正在分离的一些事件。您可以在adobe页面(systemMaxSize下的链接)上找到更多信息。
检测窗口是否最大化...我认为没有这样的功能(我可能错了)但您可以测试应用程序大小是否与可用的屏幕大小相等,这意味着它已经最大化。或挂钩调整大小事件,该事件在应用程序最大化/最小化/调整大小时触发
答案 5 :(得分:0)
这是检查窗口是否最大化的更简单方法:
if(stage.nativeWindow.displayState == NativeWindowDisplayState.MAXIMIZED)
{
//do something
}
答案 6 :(得分:0)
以下对我有用。无需设置事件侦听器,此代码可用于检查本机窗口的实时状态:
if (nativeWindow.displayState == 'maximized')
{
trace('Maximized');
}
else
{
trace('Minimized');
}