接这上一篇继续...
2 借助第三方的对象文件
swfobject.js 来向swf 传参
超链接的方式传参
<a href="VideoPlay.html?address=">Test</a>
接收参数的页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ">
<html xmlns="" lang="en" xml:lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
//获取URL参数对值,并赋给flashvars变量
if (swfobject.getQueryParamValue("address")) //获取超链接的url?后面的参数
{
flashvars.address= swfobject.getQueryParamValue("address"); //给swf文件传入参数
}
var params = {}; //一定是要这个params
params.allowFullScreen ="true"; //允许全屏否 根据自己的需要来设置参数
var attributes = {};
attributes.id = "swf"; //将嵌入的SWF文件写入对应id的div中去,并向SWF文件传入相应的参数
swfobject.embedSWF("VideoPlay.swf", "swf", "1000", "500", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>
</head>
// swfobject.embedSWF里面的swf对应的是<div>的id 是将swf文件放在哪里
<body>
<div id="swf">
</div>
</body></html>
3 flex端与就javascript的通信
需要使用到ExternalInterface 这个对象
Flex端的代码
private function callJavaScript():void {
show.text = ExternalInterface.call("sayHelloWorld");
}
// sayHelloWorld 这个就是javascript的里面的方法名
当然ExternalInterface.call这个方法还可以传参
ExternalInterface.call("js的函数名",”参数”)
那么在html页面这一块的代码
很简单
Function sayHelloWorld()
{
做自己需要的处理
如果flex端要接受返回值的话
那么js里面就一定要
return “xxxxx”;
}
貌似这个有个弊端
那就是 这种flex与javascript的互调只能在拥有flex框架载体的情况下才能用
也就是flex工程里面才可以用
为什么这么说 那是因为 我之前就是通过这种方式 让swf文件去调用js的函数
脱离了flex的工程 行不通
网上 基本上都是说的在flex工程的bin-degug文件下系统自动生成的html里面写js
我试过 只要是flex项目里面 flex 和javascript的相互调用是没问题的