是否可以防止Flex应用程序在运行时调整大小?

时间:2010-09-14 10:57:02

标签: flex air adobe resize

从我可以收集的内容,Flex应用程序的resize属性在XML配置文件中设置:

<!--Whether the user can resize the window. Optional. Default true.-->
<!--<resizable></resizable>-->

但是,如果我将此属性设置为true,是否有办法在运行时动态关闭此属性?例如,我的应用程序有两种视图模式 - 迷你和最大。我想阻止最终用户在迷你模式下调整应用程序的大小。我尝试使用以下代码阻止调整大小,但它似乎不起作用:

private function creationComplete():void {
    this.systemManager.stage.addEventListener(Event.RESIZE, resizeListener);
}

private function resizeListener(evt:Event):void {
    evt.preventDefault();
}

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:4)

如果不设置描述符文件属性,还有另一种方法可以做到这一点。

以下是代码:

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" showGripper="false"
                    layout="vertical" showStatusBar="false"
                    applicationComplete="init()">

<mx:Script>
    <![CDATA[
        import mx.events.FlexNativeWindowBoundsEvent;

        private function init():void
        {
            this.stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
            nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZING, onAppResize);
        }

        private function onAppResize(e:NativeWindowBoundsEvent):void
        {
                e.preventDefault();
        }

   ]]>
</mx:Script>

希望这有帮助。

答案 1 :(得分:1)

您需要创建一个新的NativeWindow实例并将您的应用程序重新表示为该实例。创建新的NativeWindow时,您可以在初始化时设置选项,包括可调整大小。 http://help.adobe.com/en_US/FlashPlatform//reference/actionscript/3/flash/display/NativeWindowInitOptions.html

答案 2 :(得分:0)

根据manualresizable是只读属性。 所以这可能是不可能的。

答案 3 :(得分:0)

因为这已经坏了,我很好奇:

我能够实现从resizable到不使用以下代码的切换:

private var maxMode:Boolean = true;

protected function switchMode():void
{
    if (maxMode){
        //I chose to freeze the app at current size
        //You could also set the min/max to hard coded values
        this.maxWidth = this.width;
        this.minWidth = this.width;
        this.maxHeight = this.height;
        this.minHeight = this.height;
    }
    else {
        //default values for WindowedApplication
        this.maxWidth = 2880;
        this.minWidth = 0;
        this.maxHeight = 2880;
        this.minHeight = 0;
    }

    maxMode= !maxMode
}

然而,用户仍会在应用程序的边缘显示调整大小的鼠标图标。

答案 4 :(得分:-1)

尝试添加return:

evt.preventDefault();
return;