加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex之旅--HTML向Flex传参

发布时间:2020-12-15 03:51:22 所属栏目:百科 来源:网络整理
导读:? ? ? ? 最近有个需求,要在网站中播放一段介绍性的视频,于是做了一个用Flex播放视频的demo。播放视频的代码是以前在网上找的,但是从html页面获得视频地址的时候参数传递问题浪费了很多时间,现整理总结如下: ? ? ? ? 在Flex中接收参数很简单,通过FlexGl

? ? ? ? 最近有个需求,要在网站中播放一段介绍性的视频,于是做了一个用Flex播放视频的demo。播放视频的代码是以前在网上找的,但是从html页面获得视频地址的时候参数传递问题浪费了很多时间,现整理总结如下:

? ? ? ? 在Flex中接收参数很简单,通过FlexGlobals.topLevelApplication.parameters或直接用parameters,文档中对parameters的介绍如下:

spark.components.Application.parameters():Object
[只读] 包含表示提供给此 Application 的参数的名称-值对的 Object。

可以使用 for-in 循环来提取 parameters Object 中的所有名称和值。

参数有两个源:Application 的 URL 中的查询字符串和 FlashVars HTML 参数(仅适用于主 Application)的值。




接收参数代码:

			private function init():void
			{
				if (parameters != null) {
					var source:String = parameters.source as String;
					var param2:String = parameters.test as String;
				}
			}

? ? ? ??parameters?参数有两个来源Url和FlashVars,分别介绍如下:

新建一个Flex应用程序时会同时新建一个html页面,Flex应用是嵌入到html中的。其中包括javascript和<noscript>标签两部分,只有当浏览器不支持javascript时才会执行<noscript>中的代码。

? ? ? ? 1.通过url传递参数

这种方式和html url传参一样,swf?param1=param1&param2=param2代码如下:

swfobject.embedSWF(
                "VideoPlayer.swf?source=http://material.157you.com/material/767/dcf_enc.flv&param2=test","flashContent","500",swfVersionStr,xiSwfUrlStr,flashvars,params,attributes);
<noscript>
	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="500" height="500" id="VideoPlayer">
      <param name="movie" value="VideoPlayer.swf?source=http://material.157you.com/material/767/dcf_enc.flv" />
      ......
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="VideoPlayer.swf?source=http://material.157you.com/material/767/dcf_enc.flv&param2=test " width="500" height="500">
         .......
      <!--<![endif]-->
      ......
	</object>
<noscript>
? ? ? ? 2.通过FlashVars传递参数

            var flashvars = {};
            flashvars.source = "http://material.157you.com/material/767/dcf_enc.flv";
            flashvars.param2 = "test";
            
            swfobject.embedSWF(
                "VideoPlayer.swf",attributes);
<noscript>
	<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="500" height="500" id="VideoPlayer">
		<param name="movie" value="VideoPlayer.swf" />
		<param name="flashvars" value="source=http://material.157you.com/material/767/dcf_enc.flv&param2=test" />
     ......
		<!--[if !IE]>-->
		<object type="application/x-shockwave-flash" data="VideoPlayer.swf" width="500" height="500">
		    <param name="flashvars" value="source=http://material.157you.com/material/767/dcf_enc.flv&param2=test" />
		    ......
		<!--<![endif]-->
		......
	</object>
<noscript>
注意:当同时使用url和flashvars传参时,如果参数名相同则flashvars的值会覆盖url的值


? ? ? ? 以上是通过Flex提供的专门传递参数的方式实现的,还有一种方式也可以实现参数传递,我们知道在Flex中可以调用JS的方法,所以可以在JS中写一个方法,返回值为要传递的参数,这样在Flex中就可以获取到了,这算是曲线救国的一种方法。

JS方法,返回参数params:

			function flexParams() {
				var params = {param2:'test'};
				params.source = "http://material.157you.com/material/767/dcf_enc.flv";

				return params;
			}
Flex中调用JS方法,获得参数:

			private function init():void
			{
				var params:Object = ExternalInterface.call("flexParams");
				
				if (params != null) {
					var source:String = params.source as String;
					var param2:String = params.param2 as String;
				}
			}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读