从我可以收集的内容,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();
}
非常感谢任何帮助。
答案 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)
根据manual,resizable
是只读属性。
所以这可能是不可能的。
答案 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;