Flash 与 JavaScript的交互:JS与SWF的通讯方式

所谓通讯就是信息的交换,这里我们谈的是js与Flash之间的数据交换的几种方式:

  1.Flashvars

    Flashvars - Flash初始化信息的传递者,它由N组 名值对 组成;当你的flash文件需要某些初始信息的时候就需要用到它。

    1)如果你使用标签嵌入Flash的方法,应像这样:<param name="flashvars" value="text=这是flashvars传入的数据啊" /> 用 param 标签传递信息;

    2)如果你使用的是 swfobject 就是用上面提到的,定义一个flashvars的变量然后在调用swfobject.embedSWF方法时传入这个变量;

    3)或者上面的这两种方法都可以在你要嵌入的Flash文件地址后面加上问号传递 入:"xxx.swf?name1=hello&name2=world ";

  2.JS调用Flash的方法,用参数传递信息给Flash或者得到Flash方法的返回信息

    Flash对象.flash方法名字(参数1,参数2, …);

    如:

      var flashObj = getFlashFun(“flashID”);

      var value = flashObj.flashFunName(args);

    注意:

      1.参数个数必须跟Flash里面的参数个数一致

      2.非同域下需要得到Flash内部的允许 Security.allowDomain(… domains)

      

  3.Flash调用js方法得到js方法的返回信息 或 通过参数传递信息给JS

    ExternalInterface.call(js的函数名称, ”参数1”, ”参数2”, …);

    如:

    var value:String = ExternalInterface.call(“jsFunName“, ”argument1”, ”argument2”);

    注意非同域下设置 param 标签的 allowScriptAccess 属性的 value值为 always,如:

      var params = {

        allowScriptAccess: "always"

      };

      或:

      <param name="allowScriptAccess" value="always" />