Flex 模块 模块与应用之间的访问

Application访问模块
用ModuleLoader载入的模块,application可以用child来访问module中的方法。比如在模块中有一个公共的objectMethod方法

Java代码

s = (m1.child as loaderModule).objectMethod();  

如果使用ModuleManager,那么可以向下面这样:

Java代码


       public var sm:Object=moduleInfo.factory.create() as loaderModule;  

       s = sm. objectMethod; 

模块访问Application

主要是使用parentApplication 属性:


        // testProperty可以是application的一个属性或者方法,当然module的可移植性几乎就没有了  

          var aa:Object=this.parentApplication.testProperty; 


模块访问模块

有两个模块,可以通过Application来访问:

Java代码

       <mx:ModuleLoader url="InterModule1.swf" id="m1"/>  

       <mx:ModuleLoader url="InterModule2.swf" id="m2"/>  

      s = parentApplication.m1.child. objectMethod (); 

给ModuleLoader传递参数
     采用给url传递参数的方式,下面的是载入module的url

     Java代码

     var s:String = "QueryStringModule.swf?" + "firstName=" +ti1.text + "&lastName=" + ti2.text; 

在模块中
Java代码
var myPattern:RegExp = /.*\?/;  
var s:String = this.loaderInfo.url.toString();  
s = s.replace(myPattern, "");  
var params:Array = s.split("&");  
var keyStr:String;  
var valueStr:String;  
var paramObj:Object = params;  
          
for (keyStr in paramObj) {  
   valueStr = String(paramObj[keyStr]);  
   ta1.text += keyStr + ":" + valueStr + "\n";  
}  
          
for (var i:int = 0; i < params.length; i++) {  
     var tempA:Array = params[i].split("=");  
     if (tempA[0] == "firstName") {  
          o.firstName = tempA[1];  
      }  
     if (tempA[0] == "lastName") {  
          o.lastName = tempA[1];  
      }  
}  
 
if (StringUtil.trim(o.firstName) != "" &&  StringUtil.trim(o.lastName) != "") {  
    salutation = "Welcome " +o.firstName + " " + o.lastName + "!";  
} else {  
   salutation = "Full name not entered." 

你可能感兴趣的:(Flex)