Flex4如何给swf传参数

来源:互联网 发布:如何下载windows 10 编辑:程序博客网 时间:2024/06/06 12:27
基本上有3种方式: 
1)通过URL查询字符串方式给swf传参数 

URL如下: 
http://localhost:8080/html2Swf/bin-debug/html2Swf.swf?myName=aa&myHometown=aa 

2)通过URL查询字符串方式给swf的wrapper html页面传参数 

URL如下: 
http://localhost:8080/html2Swf/bin-debug/html2Swf.html#firstName=Nick&lastName=Danfffger 

注意,第1中方式中用?, 第2中方式用#, 另外第2种方式里name/value对的分割符可以自定义,代码中解析时作出相应更改即可,详细资料可以参考Flex3帮助文档: 
http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_3.html 
http://livedocs.adobe.com/flex/3/html/help.html?content=deep_linking_5.html#245869 

3)在对应的Wrapper html页面中静态配置,有两个地方可以配置: 
位置1 var flashvars = {}; 

案例 var flashvars = {"myName":"Danger","myHometown":"Los%20Angeles_Flashvars"}; 

位置2 
Java代码
          swfobject.embedSWF(                "${swf}.swf", "flashContent",                 "${width}", "${height}",                 swfVersionStr, xiSwfUrlStr,                 flashvars, params, attributes);

案例: 
Java代码
          swfobject.embedSWF(                "${swf}.swf?myName=aa&myHometown=bb", "flashContent",                 "${width}", "${height}",                 swfVersionStr, xiSwfUrlStr,                 flashvars, params, attributes);

综合案例 

按方式1和3传参数,只有上面的TitleWindow里面有值,其中方式3事实上就是不传参数,按方式2传参数,只有下面的TitleWindow里面有参数值. 
Java代码

<?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"    creationComplete="initVars();init(event)" minWidth="955" minHeight="600"><s:layout><s:VerticalLayout/></s:layout><fx:Declarations><!-- Place non-visual elements (e.g., services, value objects) here --></fx:Declarations><fx:Script><![CDATA[import mx.core.FlexGlobals;import mx.core.mx_internal;use namespace mx_internal;// Declare bindable properties in Application scope.[Bindable]public var myName:String;[Bindable]public var myHometown:String;// Assign values to new properties.private function initVars():void {myName = FlexGlobals.topLevelApplication.parameters.myName;myHometown = FlexGlobals.topLevelApplication.parameters.myHometown;}import mx.managers.BrowserManager;import mx.managers.IBrowserManager;import mx.utils.URLUtil;private var bm:IBrowserManager;[Bindable]private var fName:String;[Bindable]private var lName:String;         private function init(e:Event):void {bm = BrowserManager.getInstance();bm.init("", "Welcome!");/* The following code will parse a URL that passes firstName and lastName asquery string parameters after the "#" sign; for example:http://www.mydomain.com/MyApp.html#firstName=Nick&lastName=Danger */var o:Object = URLUtil.stringToObject(bm.fragment, "&");fName = o.firstName;lName = o.lastName;}]]></fx:Script><mx:TitleWindow title="Passing variables to swf directly"><mx:HBox><mx:Label text="Name: "/><mx:Label text="{myName}" fontWeight="bold"/></mx:HBox><mx:HBox><mx:Label text="Hometown: "/><mx:Label text="{myHometown}" fontWeight="bold"/></mx:HBox></mx:TitleWindow><mx:TitleWindow title="Passing variables to swf through wrapper html"><mx:Form><mx:FormItem label="First name:"><mx:Label id="ti1" text="{fName}"/></mx:FormItem><mx:FormItem label="Last name:"><mx:Label id="ti2" text="{lName}"/></mx:FormItem></mx:Form></mx:TitleWindow></s:Application>


0 0
原创粉丝点击