动态插入flash对象的javascript和flash通信问题

时间:2011-02-03 14:45:23

标签: jquery flash actionscript-2 externalinterface

我正在使用ExternalInterface与AS2进行javascript和flash通信。这适用于我的Flash游戏嵌入在虚拟页面中,来自flash和javascript的调用工作正常,没有任何错误。

在我的新页面中,我动态地将flash对象插入div(通过jquery)。问题是,当我调用像flash_Obj.JS2Flash_SetValue(val);这样的flash函数时,它表示JS2Flash_SetValue不是定义的函数。虽然当我检查object / embed元素的存在时,它确实显示了元素(我使用了firebug来调试)。

否则,在虚拟页面中,我正在测试javascript和flash通信,它运行没有任何错误。

我已经看过这个问题 - Javascript loses communication with flash when moved inside dom

但它没有多大帮助。

有人可以建议一个解决方案吗?

Flash代码

ExternalInterface.addCallback("JS2Flash_SetValue", null, SetValue);
var fVal:String;
function SetValue(_val:String):Void
{       
    ExternalInterface.call("ShowAlert", _val + " has received from JS.");
}

JS代码

function SetValue1(val) // first approach i tried
 {          
  var flash_Obj = $('#flashGame').[0];
  flash_Obj.JS2Flash_SetValue(val);

  var flash_Obj1 = $('#flashGame').get(0);
  flash_Obj1.JS2Flash_SetValue(val);
 }

 function SetValue2(val) // another approach i tried
 {           
   var flash_Obj = getMovieName('flashGame');    
   flash_Obj.JS2Flash_SetValue(val);
 }

 function getMovieName(movieName) {
   if (navigator.appName.indexOf("Microsoft") != -1) {
       return window[movieName];
   }
   else {
       return document[movieName];
   }
 }

 function ShowAlert(msg) {
   alert(msg);
 }

由于

1 个答案:

答案 0 :(得分:0)

很简单。使用document.getElementById('flashgame').JS2Flash_SetValue(msg),它就像一个魅力