swfobject.embedswf ExternalInterface.addCallback无效

时间:2013-04-27 12:03:20

标签: swfobject microphone externalinterface

我正在使用JS和AS3来获取默认麦克风。下面是我的HTML代码

js在头上     

    $(document).ready(function(){
     $("#setupMic").click(function() {
      try{
       document.getElementById('test').setupMic();
      } catch(err) {
       console.log(err.message);
      } 
     });
    });
    
在div flashContent之后的js     
    var callback = function(e){ if(e.success) console.log("Loading Success"); else console.log("Loading Failed");};
    var flashvars = {};
    var params = {allowscriptaccess:"always"}; 
    var attributes = {};
    attributes.id = "test";
    swfobject.embedSWF("test.swf", "flashContent", "220", "140", "10", false, flashvars, params, attributes, callback);
    
我的AS3代码是     
    import flash.system.Security;
    import flash.external.ExternalInterface;
    var mic:Microphone;
    Security.allowDomain('*');
    ExternalInterface.addCallback("setupMic", setupMic);
    function setupMic():void {
     mic = Microphone.getMicrophone();
     mic.setLoopBack(true);
    }
    
html在firefox中完美运行。但不是我的朋友mac上的chrome或safari。我错过了什么请帮助

1 个答案:

答案 0 :(得分:0)

您可能有时间问题。 Flash Player需要一些时间来初始化ExternalInterface。如果尝试在domready上访问SWF,则Flash Player可能尚未完成初始化ExternalInterface,这意味着您的方法setupMic()可能尚未可用。

我建议查询SWF以查看它是否已完成加载。 LearnSWFObject.com上有一个例子:http://learnswfobject.com/advanced-topics/executing-javascript-when-the-swf-has-finished-loading/