[flash=200,200]
一、module

1 overview

module是可以由application加载和卸载的swf文件。通过将application分解成若干个module,可以减小application文件的大小,并减少首次加载的时间。module不能独立于application运行,也不能加载到浏览器窗口,只能通过application加载

2 write

可以通过AS代码或MXML标签定义module

MXML方式:







AS方式:必须继承mx.modules.ModuleBase或mx.modules.Module

// modules/asmodules/SimpleModule.as
package {
import mx.modules.ModuleBase;

public class SimpleModule extends ModuleBase {
public function SimpleModule() {
trace("SimpleModule created");
}

public function computeAnswer(a:Number, b:Number):Number {
return a + b;
}
}
}

3 compile

可使用命令行mxmlc编译模块。

module的大小依赖于它所包含的组件和类,如果module链接了与application类重叠的类则module会比较大,要减小module的大小,需要把module指向由application包含的具体类。module只包含它需要的类,框架代码及其他依赖代码包含在application中。若用命令行编译,需要为application创建一个linker report,并把这个report放入module的编译选项中

mxmlc: -link-report=report.xml MyApplication.mxml

mxmlc: -load-extern=report.xml MyModule.mxml

4 load





import mx.modules.*;

public function createModule(m:ModuleLoader, s:String):void {
if (!m.url) {
m.url = s;
return;
}
m.loadModule();
}

public function removeModule(m:ModuleLoader):void {
m.unloadModule();
}
]]>














二:窗口传值

子窗口定义





[Bindable]
public var functionXml:XML; //定义子窗口属性

]]>



父窗口定义

import mx.managers.PopUpManager;



private function openFunc(event:MouseEvent):void
{
var child:ChildWindow= ChildWindow(PopUpManager.createPopUp(this,ChildWindow,true));

child.functionXml = XML({xmlData}); //为子窗口传值
}




[/flash]



viewSourceURL="srcview/index.html">

height="90%"
width="90%"
paddingTop="10"
paddingLeft="10"
paddingRight="10"
paddingBottom="10">

color="blue"
text="Select the tabs to change the panel."/>

width="100%"
height="100%"
creationPolicy="auto">

label="Column Chart Module">

text="ColumnChartModule.swf"/>




label="Pie Chart Module">

text="piehchartmodule.swf"/>




label="Line Chart Module">

text="linehchartmodule.swf"/>














linechartmodule.mxml




width="100%"
height="100%">



import mx.collections.ArrayCollection;
[Bindable]
public var expenses:ArrayCollection=new ArrayCollection([

{Month: "Jan", Profit: 2000, Expenses: 1500},
{Month: "Feb", Profit: 1000, Expenses: 200},
{Month: "Mar", Profit: 1500, Expenses: 500}]);

]]>


dataProvider="{expenses}">



categoryField="Month"/>





yField="Profit"
displayName="Profit"/>

yField="Expenses"
displayName="Expenses"/>