Flex:createPopUp - >制作除滚动条之外的所有模态

时间:2011-09-28 14:19:20

标签: flex modal-dialog

我制作了这个简单的应用程序来演示我的问题。它有:

  • 图片
  • 启动弹出窗口的按钮
  • 侧面的滚动条
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" 
                   verticalScrollPolicy="on"
                   horizontalScrollPolicy="on"
                   layout="vertical">

    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            public function buttonClick():void {
                PopUpManager.createPopUp(this,JakePanel,true);
            }
        ]]>
    </fx:Script>

    <mx:Image width="2000"
              source="@Embed(source='assets/image.jpg')"/> 
    <mx:Button click="{buttonClick()}" label="Launch"/>

</mx:Application>

按下启动按钮后,它会启动此弹出窗口:

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
          xmlns:s="library://ns.adobe.com/flex/spark" 
          xmlns:mx="library://ns.adobe.com/flex/mx" 
          layout="vertical" 
          width="400" height="300"
          title="Popup"
          >
    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            public function close():void {
                PopUpManager.removePopUp(this);
            }           
        ]]>
    </fx:Script>
    <s:TextArea text="Enter more text here: " width="100%" height="200"/>
    <s:Button label="OK" click="{close()}" width="100%" height="30" />

</mx:Panel>

这些是我的要求

  1. 当弹出窗口打开时,我需要能够禁用弹出窗口以外的所有内容。为此,我使用:PopUpManager.createPopUp(this,JakePanel,true);。最后一个参数指定弹出窗口是“模态”的,它应该捕获所有鼠标事件。

  2. 我还需要在弹出窗口打开时允许启用主滚动条。通常我的用户会在非常小的屏幕上打开应用程序,但无法调整应用程序的大小。例如:

  3. enter image description here

    当应用程序太小而无法单击“确定”按钮时,这是一个问题:

    enter image description here

    除了主滚动条之外,有没有办法让所有东西都“模态”?我知道我可以在Panel上放一个滚动条,但我宁愿避免这种情况。

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是:

  1. 将主应用程序中的所有内容包装在<mx:hgroup id="allYourStuff">标记中。
  2. 当您将弹出窗口添加到屏幕时调用:allYourStuff.enabled = false
  3. 当您从屏幕上移除弹出窗口时:allYourStuff.enabled = true