Flex ModuleLoader向Module(模块)传递参数实例

参考: http://www.myflexhero.com/share/flex-hero-flex4/flex-hero-components/flex-module/278  

 

开发中我们一般会用到Module,有时候我们在调用该Module后需要向其传递参数。传递参数的方式很多,比如使用事件的方式。

            这里我使用ModuleLoader提供的特征进行传递参数使用示例。代码写的还算简单,我相信你能看明白。

关于在模块中获取url中的参数,请参见Flex loaderInfo swf模块获取url传递的参数一文。

(你可以点击这里(Click here to see the effect in new window)新开窗口查看效果,点击这里(View Source)查看源码):

[点击按钮后请稍候片刻,经测试需要一定时间下载该模块,且界面没有提示(因为我没有添加加载提示,加载提示效果请查看Flex ModuleLoader和ModuleManager的区别、ModuleManager加载模块实例一文)。]

 

 

  主文件源码
<?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>

 

 

副文件 MyFlexHeroTest源码

 

<?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>
 

 

你可能感兴趣的:(xml,Flex,Adobe)