我见过一些类似的问题,但没有什么像我想要弄清楚的那样,所以这里是。我有一个具有许多 View 状态的 Flex 应用程序,其中一些经常使用,一些则不经常使用。目前,所有这些状态都驻留在一个 mxml 文件中,因此只会生成一个 swf 文件并在客户端浏览器中加载。我想通过将这些 View 状态分成不同的源文件并将状态从一个文件加载到另一个文件中来模块化这些 View 状态,但是,我仍然希望用户只需加载一个 swf 文件。我这样做的主要原因是避免源文件超过 10,000 行。有解决这个问题的标准方法吗?
谢谢。
最佳答案
有两种方法可以满足您的要求。第一个听起来像是您要问的,第二个是我推荐的。
第一:
创建 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>
关于apache-flex - 模块化和弹性 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4270784/