[Flex]在Flex中传递参数

 

友情提示:
由于Flex已经更新到3.0版本,所以本文所写的内容只对Flex1.5有效,在Flex1.5以上的版本中均不好使
关于Flex2.0及其以上的内容请看这里:http://www.k-zone.cn/zblog/catalog.asp?tags=Flex2&page=1

以前的内容:
有很多朋友都问如何在Flex中的2个"窗体"(以下我也这么称呼)之间进行调用和传递参数
下面我就给大家讲解一下:

1. 调用窗体
A 窗体是一个applicaton窗体 B 窗体是自定义窗体(类似Dialog之类的窗体,本身并不能独立运行)
A 窗体 片断代码如下:

<mx:Script>
<![CDATA[
import mx.containers.TitleWindow;
import mx.managers.PopUpManager;
function ShowDetailDialog(){
var oInitObj:Object = new Object();
  oInitObj.title = "FX-Blog Details";
  oInitObj.width = 400;
  oInitObj.height = 480;
  oInitObj.x = 350;
  oInitObj.mainApp = this;
  oInitObj.strDetailTitle = "aaa";
  oInitObj.strDetailDetails = "bbb";
  var DetailsDialogInstance:Object = TitleWindow(PopUpManager.createPopUp(_root, B, true, oInitObj, false))
}
 ]]>
 </mx:Script>
 <mx:Button label="Click" click="ShowDetailDialog()" width="61"/>

B 窗体 片断代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.macromedia.com/2003/mxml"
closeButton="true"
click="this.deletePopUp();"
alpha="50" initialize="initComponent()">
<mx:Script>
<![CDATA[
  public var mainApp:index = null;
  public var strDetailTitle:String;
  public var strDetailDetails:String;
}
]]>
</mx:Script>
<mx:TextArea" text="{strDetailTitle}" editable="false" width="100%" alpha="0" height="240" vScrollPolicy="auto"/>
<mx:TextArea" text="{strDetailDetails}" editable="false" width="100%" alpha="0" height="240" vScrollPolicy="auto"/>
</mx:TitleWindow>

以上,当在A窗体点击button的时候,触发Click event然后调用ShowDetailDialog这个function,在这个function中红色的字体是必须要注意的,其中strDetailTitle和strDetailDetails这个两个变量就是要传递参数的变量和B窗体中的strDetailTitle和strDetailDetails必须一致,否则在Flex中不认哦。这样当点击button后,就会调用B窗体并且把strDetailTitle和strDetailDetails传递到B窗体的textArea中了
其中
var DetailsDialogInstance:Object = TitleWindow(PopUpManager.createPopUp(_root, B, true, oInitObj, false)
这行代码中的B一定要和A在同一个文件夹中,并且名字和和B的外部名称一致,否则也会失败的!