WEB开发网
开发学院图形图像Flash embed标签和url向Flash传flashvars值的问题 阅读

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代码:

  1. <object> 
  2. <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> 
  3. </object> 

AS3代码test.swf:

  1. var tf:TextField=new TextField();  
  2. var str1:String =stage.loaderInfo.parameters.width;   
  3. var str2:String =stage.loaderInfo.parameters.height;   
  4. var str3:String =stage.loaderInfo.parameters.color;   
  5. tf.text="width="+str1+"height="+str2+"color="+str3;  
  6.  
  7. tf.width=300;  
  8. addChild(tf); 

embed中的swf可以读取flashvars中的值对,此时舞台上显示出了响应的结果。这种方法可以用到简单的数据交换,方便省事,避免读取xml或借用js得到外部数据。

如果有多个值对也可以用for in遍历:

AS3代码:

  1. var tf:TextField=new TextField();  
  2. var paramObj:Object=stage.loaderInfo.parameters;  
  3. for(var key:String in paramObj){  
  4. tf.appendText(key+"="+paramObj[key]);  
  5. }  
  6. tf.width=300;  
  7. 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。( 作者:绿色花园 )

Tags:embed 标签 url

编辑录入:coldstar [复制链接] [打 印]
赞助商链接