2009-09-20 40 views
1

美好的一天。從不同的mxml組件中的TitleWindow調用Application.application.enable

我有一個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> 

任何幫助greattly apreciated。謝謝。

+0

有人可以幫助我嗎? – 2009-09-20 23:21:39

+0

標題和身體編輯更好的理解..希望它有幫助。 – 2009-09-20 23:36:48

+0

我不知道如何在Flex中做到這一點(但是),但是你可以從你的主窗體傳入一個委託或函數,然後當它的任務完成時讓「子」調用該函數嗎? – 2009-09-20 23:49:41

回答

2

applicationApplication類的靜態屬性,可以從TitleWindow

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

BTW被調用,還有一種更簡單的方式來實現以下目標:

這樣,用戶就着使用應用程序中的任何組件,並且仍然可以使用TitleWindow中的組件。

這就是使用模式彈出。將createPopUp的第三個參數設置爲true就是這樣 - 您不必手動啓用/禁用應用程序:flex會處理它。一旦你撥打removePopUp

PopUpManager.createPopUp(this,Login, true); 

應用程序會自動開始運作。

+1

Lool ..你無法想象我有多少想知道並試圖做到這一點...和一個簡單的真實伎倆..大聲笑..謝謝。 – 2009-09-21 15:21:18

+0

嘿謝謝,也在尋找這個解決方案! :) 幫我一把。 – Jakub 2009-10-20 19:27:35

1

您可以使用自定義事件來啓用此功能,如here所述。

本質上,您在所調用的類中設置了一個自定義事件,然後創建一個在事件耗盡時運行的函數。這樣,'Loja'就會知道'登錄'何時完成。

+0

正確的我試圖做一個事件監聽器來觀看TitleWindow出口,但沒有運氣。任何方式Amarghosh最後的方法證明簡單而有效。任何方式感謝邁克爾。 – 2009-09-21 15:20:14

相關問題