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