开发中我们一般会用到Module,有时候我们在调用该Module后需要向其传递参数。传递参数的方式很多,比如使用事件的方式。
这里我使用ModuleLoader提供的特征进行传递参数使用示例。代码写的还算简单,我相信你能看明白。
<?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"
viewSourceURL="srcview/index.html">
<fx:Script>
<![CDATA[
import com.myflexhero.MyFlexHeroTest;
import mx.events.ModuleEvent;
import mx.modules.ModuleLoader;
protected function clickEvent(event:Event):void
{
var general:ModuleLoader = new ModuleLoader();
general.url="com/myflexhero/MyFlexHeroTest.swf";
general.addEventListener(ModuleEvent.READY,readyModule);
addElement(general);
}
private function readyModule(event:ModuleEvent):void{
var ml:ModuleLoader=event.target as ModuleLoader;
//这里的MyFlexHeroTest则是MyFlexHeroTest.swf对应的mxml类
//如果你选择下载源码,我测试时写的是Share.swf。
var ichild:MyFlexHeroTest = ml.child as MyFlexHeroTest;
if(ichild){
ichild.loginName = "MyFlexHero,Welcome!";
}
}
]]>
</fx:Script>
<s:Button label="点击传入" click="clickEvent(event)"/>
</s:Application>
副文件 源码]:
<?xml version="1.0" encoding="utf-8"?> <mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300" creationComplete="module1_creationCompleteHandler(event)"> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.FlexEvent; public var loginName:String; protected function module1_creationCompleteHandler(event:FlexEvent):void { Alert.show("传入的参数:"+loginName); } ]]> </fx:Script> </mx:Module>
http://www.myflexhero.com