2

我见过一些类似的问题,但与我想要弄清楚的完全不同,所以就这样吧。我有一个具有许多视图状态的 flex 应用程序,其中一些经常使用,而另一些则不是。目前所有这些状态都保存在一个 mxml 文件中,因此在客户端浏览器中只生成和加载一个 swf 文件。我想模块化这些视图状态,方法是将它们分离到不同的源文件中,并将状态从一个文件加载到另一个文件中,但是,我仍然希望用户只需要加载一个 swf 文件。我这样做的主要原因是避免源文件超过 10,000 行。有解决这个问题的标准方法吗?

谢谢。

4

1 回答 1

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>
于 2010-11-24T20:20:22.527 回答