从TitleWindow中调用另一个mxml组件中的Application.application.enable

时间:2009-09-20 18:08:06

标签: flex flex3

美好的一天。

我有一个Flex RIA应用程序,并且在应用程序标记中,当按下从另一个.mxml文件调用TitleWindow时会有一个按钮,并设置

application.enable = false

这样用户就无法使用应用程序中的任何组件,仍然可以使用TitleWindow中的组件。

问题所在。当TitleWindow关闭时,我希望他将应用程序恢复到

application.enable = true

再次启用应用程序。但我无法从TitleWindow .mxml

中调用该代码

我该怎么做?..

这是来源:

Loja.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="585" height="450" xmlns:ns1="com.*">
<mx:Style source="theme/simplicitygray.css" />

    <mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            private var clientid = 0;       

            public function openWindow() : void
            {
                if (clientid == 0) 
                {
                    PopUpManager.createPopUp(this,Login,false);
                    application.enabled = false;
                } else {
                    PopUpManager.createPopUp(this,Conta,false);
                    application.enabled = false;
                }
            }
        ]]>
    </mx:Script>

    <mx:Panel x="10" y="40" width="565" height="400" layout="absolute">
    </mx:Panel>
    <mx:MenuBar x="10" y="10" width="565" height="22"></mx:MenuBar>
    <mx:Button x="508" y="10" label="Aceder" click="openWindow();"/>

</mx:Application>

其中一个标题窗口。一旦他们是相同的。

Login.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="350" height="200" creationComplete="centerWindow()" showCloseButton="true" close="closeWindow()" title="Login">

    <mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            public function centerWindow():void
            {
                PopUpManager.centerPopUp(this);
            }

            public function closeWindow():void
            {
                PopUpManager.removePopUp(this);

            }

       ]]>

    </mx:Script>

</mx:TitleWindow>

任何帮助都是非常好的。感谢。

2 个答案:

答案 0 :(得分:2)

applicationApplication类的静态属性,可以从TitleWindow

调用
public function closeWindow():void
{
    PopUpManager.removePopUp(this);
    Application.application.enabled = true;
}

BTW,还有另一种更简单的方法来实现以下目标:

  

这样,用户无法使用应用程序中的任何组件,仍然可以使用TitleWindow中的组件。

那就是使用模态弹出窗口。将createPopUp的第三个参数设置为true,就是这样 - 您不必手动启用/禁用应用程序:flex将负责处理它。

PopUpManager.createPopUp(this,Login, true);
一旦拨打removePopUp

应用程序将自动生效。

答案 1 :(得分:1)

您可以使用自定义事件来启用此功能,如here所述。

基本上,您在要调用的类中设置自定义事件,然后创建在使用事件时运行的函数。这样你的'Loja'就会知道“登录”何时完成。