embed标签和url向Flash传flashvars值的问题
2012-02-06 12:13:36 来源:本站整理核心提示:今天的工作遇到了flash读取embed中的flashvars值,特意研究了一下,embed标签和url向Flash传flashvars值的问题,先看html代码:<object> <embed src="test.swf" wmode="transparent"
今天的工作遇到了flash读取embed中的flashvars值,特意研究了一下。
先看html代码:
- <object>
- <embed src="test.swf" wmode="transparent" quality="high" width="550" height="400"
align="L" scale="noborder" flashvars="width=300&height=500&color=blue"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>- </object>
AS3代码test.swf:
- var tf:TextField=new TextField();
- var str1:String =stage.loaderInfo.parameters.width;
- var str2:String =stage.loaderInfo.parameters.height;
- var str3:String =stage.loaderInfo.parameters.color;
- tf.text="width="+str1+"height="+str2+"color="+str3;
- tf.width=300;
- addChild(tf);
embed中的swf可以读取flashvars中的值对,此时舞台上显示出了响应的结果。这种方法可以用到简单的数据交换,方便省事,避免读取xml或借用js得到外部数据。
如果有多个值对也可以用for in遍历:
AS3代码:
- var tf:TextField=new TextField();
- var paramObj:Object=stage.loaderInfo.parameters;
- for(var key:String in paramObj){
- tf.appendText(key+"="+paramObj[key]);
- }
- tf.width=300;
- addChild(tf);
读取到的flashvars其实是一个Object类型,可以用for in遍历。但这种方法要注意测试的时候html文件路径避免是中文,因为这样可能会导致flash读取到的数据是乱码。
讨论另一种情况。
如果这个swf没有插入到html中,而是直接用http://www.abc.com/test.swf这种方式打开的话那flash的stage.loaderInfo.parameters不就得不到数据了吗?
其实也不是,不妨换一种方法。如果你在后面加上相应的参数如:http://www.abc.com/test.swf?width=300&height=500&color=blue,enter打开一下该网页,你会发现舞台上又显示出了url传来的值,url传值到了stage.loaderInfo.parameters对象中。这种方法在本地测试不了,必须放在服务器上如localhost。( 作者:绿色花园 )
- ››URL Rewrite实现jsp网站伪静态
- ››Url传参数被IE截断的解决方案
- ››URL和HttpCore,HttpClien(不用DNS解析,直接访问...
- ››embed标签和url向Flash传flashvars值的问题
- ››url2bmp网页截图工具 命令行参数说明
- ››Embed Flash Yahoo Weather in your page with Ya...
- ››URL Rewrite(1):IIS与ASP.NET
- ››URL Rewrite(2):使用组件进行URL Rewrite
- ››URL Rewrite(3):在URL Rewrite后保持PostBack地...
- ››URL Rewrite(4):不同级别URL Rewrite的一些细节...
- ››标签使用
- ››URL编码转换,escape() encodeURI() encodeURIComp...
更多精彩
赞助商链接