2010-11-24 51 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