2010-11-24 49 views
2

我見過一些類似的問題,但沒有什麼比我想弄明白的,所以在這裏。我有許多視圖狀態的flex應用程序,其中一些經常使用,其中一些不是。目前,所有這些狀態都駐留在一個mxml文件中,因此在客戶端瀏覽器中只生成並加載一個swf文件。我想通過將這些視圖狀態分離爲不同的源文件並將狀態從一個文件加載到另一個文件中來模塊化這些視圖狀態,但是,我仍然希望用戶只需加載一個swf文件。我的主要原因是避免源文件超過10,000行。有沒有解決這個問題的標準方法?模塊化和彎曲視圖狀態

謝謝。

回答

5

有兩種方法可以做你想問的問題。首先是聽起來像你問,第二是我會建議。

第一:

創建main.mxml應用程序,然後創建單獨的component1.mxml和component2.mxml文件爲每個狀態。然後在你的應用程序中建立這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<s: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" minWidth="955" minHeight="600" xmlns:local="*"> 
    <s:states> 
     <s:State name="State1"/> 
     <s:State name="State2"/> 
    </s:states> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <local:Component1 includeIn="State1"/> 
    <local:Component2 includeIn="State2"/> 
</s:Application> 

的第二種方式,和一個我建議,因爲你的應用程序的說明將其分解成一個swf應用程序的多個SWF模塊。這樣用戶只會下載他們計劃使用的內容。在這種情況下,請執行與以前相同的操作,但創建模塊而不是組件。

<?xml version="1.0" encoding="utf-8"?> 
<s: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" minWidth="955" minHeight="600" xmlns:local="*"> 
    <s:states> 
     <s:State name="State1"/> 
     <s:State name="State2"/> 
    </s:states> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <mx:ModuleLoader url="Component1.swf" includeIn="State1"/> 
    <mx:ModuleLoader url="Component2.swf" includeIn="State2"/> 
</s:Application> 
+0

非常感謝。這非常有幫助。 – 2010-11-24 21:09:55