`
lorry1113
  • 浏览: 256462 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SwfObject解决Html与Flash之间传递参数问题

    博客分类:
  • flex
阅读更多

  在彻底摒弃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)。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics