SwfObject解决Html与Flash之间传递参数问题
2008-10-28 16:08 宝宝合凤凰 阅读(2966) 评论(0) 收藏 举报SwfObject解决Html与Flash之间传递参数问题
在彻底摒弃Adobe的激活ActiveX控件的方法一文中已经详细分析了使用Adobe提供的AC_RunActiveContent.js导致HTML与Flash之间不能传递参数的问题。经过Adobe论坛里GWD的提示,我转而寻求SwfObject的帮助。发现SwfObject是一个很好的解决方案。
SwfObject英文介绍:http://blog.deconcept.com/swfobject/
SwfObject中文翻译:http://www.awflasher.com/flash/articles/swfobj.htm
源文件:SWFObject 1.5
关于SwfObject的介绍上面两篇文章已经讲的很详细了。我这里只列一段标准的应用和一些上面两篇文章没有提到的问题.
Html中的JS代码
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
// <![CDATA[
var so = new SWFObject("asCallJs.swf", "MyDemo", "500", "400", "9", "#FF6600");
so.addVariable("param1", "Parameter1"); // this line is optional, but this example uses the variable and displays this text inside the flash movie
so.addVariable("param2", "Parameter2");
so.useExpressInstall('expressinstall.swf');
so.write("flashcontent");
// ]]>
</script><!--被AS调用的JS函数-->
<script language="Javascript">
// <![CDATA[
// adds two numbers, and sends the result back to ActionScript
function addNumbers(num1, num2)
{
result=num1 + num2;
alert("3+7=" + result);
return (result);
}
// ]]>
</script>
Flash中的AS代码
//****************调用JS函数,得到返回值*****************
var n1:uint = 3;
var n2:uint = 7;
if (ExternalInterface.available) {
var res:uint = ExternalInterface.call(”addNumbers”, n1, n2);
function_txt.text=”3+7=”+res.toString();
}
//****************直接得到JS中参数****************
//AS2中做法
//param1_txt.text=param1;
//AS3中做法
param1_txt.text=this.loaderInfo.parameters.param1;
param2_txt.text=this.loaderInfo.parameters.param2;
注:如果要在AS3中用OOP来操作的话,需要专门构建一个类,用它其中的静态变量来存储全局变量,要使用这些变量的类先继承它(Storing SWFObject.addVariable() vars globally in AS3)。
浙公网安备 33010602011771号
09月 21st, 2007 at 12:34 pm
<!– 引用swfobject.js –>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript"> // <![CDATA[ //注意"MyDemo"不能带有空格,否则函数无法调用 var so = new SWFObject("asCallJs.swf", "MyDemo", "500", "400", "9", "#FF6600"); so.addVariable("param1", "Parameter1"); // this line is optional, but this example uses the variable and displays this text inside the flash movie so.addVariable("param2", "Parameter2"); so.useExpressInstall(\\\'expressinstall.swf\\\'); so.write("flashcontent"); // ]]></script>
<!–被AS调用的JS函数–>
//注意不要写成
<script type="text/javascript"> // <![CDATA[ // adds two numbers, and sends the result back to ActionScript function addNumbers(num1, num2) { result=num1 + num2; alert("3+7=" + result); return (result); } // ]]></script>
09月 21st, 2007 at 1:03 pm
[...] 替代方案:SwfObject 请参考SwfObject解决Html与Flash之间传递参数问题 [...]
09月 22nd, 2007 at 6:55 pm
[...] 如文章标题所示,Flash Earth是通过Flash调用Google Maps的数据,并控制地图浏览的一个小程序,它又以下几个文件组成: 1 index.html - 包含Flash的入口页面。其中插入Flash使用的是SwfObject。关于SwfObject的使用请参参考SwfObject解决Html与Flash之间传递参数问题。 2 swfobject.js - SwfObject的源文件,只有在index.html中引用它才可以使用Swf Object来插入Flash,类似于AC_RunActiveContent.js。 3 flash_earth.swf - 主程序,实现对Google Maps数据的调用。 4 main.css - 格式文件,用于控制index.html中格式。 [...]
09月 27th, 2007 at 8:52 pm
[...] 在SwfObject解决Html与Flash之间传递参数问题一文中已经介绍了SwfObject的用法,但今天发现so.write(”flashcontent”);中如果”flashcontent”为table的id,那么在IE中无法加载Flash.这个问题很好解决,只要建一个一行一列的table,把id加到单元格上就不会出问题了。 [...]
10月 26th, 2007 at 11:34 am
写的非常好,谢谢啦~
10月 31st, 2007 at 11:10 am
谢谢!
11月 21st, 2007 at 7:13 am
phentermine…
Halla everybody! I want pharmacist this tbl. Need phentermine amdbl…
03月 31st, 2008 at 7:39 pm
[...] 在SwfObject解决Html与Flash之间传递参数问题中已经简要介绍了如何使用SwfObject在页面中插入Flash,如何在初始时由JS向Flash传递参数,以及运行时Flash如何调用JavaScript中函数。这里主要介绍运行时JavaScript如何互相传递参数, 并控制Flash的播放。 [...]