2011-02-03 75 views
0

我正在使用JavaScript和使用ExternalInterface与AS2进行flash通信。这适用于我的Flash游戏被嵌入在一个虚拟页面中,并且来自flash和javascript的调用工作正常,没有任何错误。动态插入闪存对象的javascript和flash通信问题

在我的新页面中,我动态插入Flash对象(由jquery)。问题是,当我调用像flash_Obj.JS2Flash_SetValue(val);这样的闪存函数时,它说JS2Flash_SetValue不是一个已定义的函数。尽管当我检查object/embed元素的存在时,它确实显示了元素(我使用firebug进行调试)。

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

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

,但它是没有太大的帮助。

有人可以提出一个解决方案吗?

闪存代码

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); 
} 

感谢

回答

0

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