2013-04-27 56 views
0

我與JS和AS3工作得到默認麥克風。下面是我的html代碼swfobject.embedswf ExternalInterface.addCallback工作不

JS頭部DIV flashContent後

 
    $(document).ready(function(){ 
    $("#setupMic").click(function() { 
     try{ 
     document.getElementById('test').setupMic(); 
     } catch(err) { 
     console.log(err.message); 
     } 
    }); 
    }); 
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瀏覽器。我錯過了什麼。請幫助

+0

是由於一些安全問題。在Firefox首先我需要在Flash播放器設置管理器上添加可信賴的位置。如果我改變位置,它也不會在Firefox中工作。任何後? – abduIntegral 2013-04-30 09:17:44

回答

0

你可能有一個時間問題。 Flash Player需要一些時間來初始化ExternalInterface。如果您嘗試訪問domready中的SWF,Flash播放器可能沒有完成初始化ExternalInterface的,這意味着你的方法setupMic()可能無法使用呢。

我建議查詢SWF,看它是否已完成加載。有一個關於LearnSWFObject.com一個例子:http://learnswfobject.com/advanced-topics/executing-javascript-when-the-swf-has-finished-loading/

+0

謝謝你的回覆。這似乎不是問題。我試圖等待很長時間,然後調用setupMic()。不用找了。我檢查了您給出的完成加載示例,並在警報(「SWF加載完成!」)後嘗試調用setupMic()。但不工作鉻,在Firefox中它工作正常 – abduIntegral 2013-04-29 06:23:46

+0

是由於一些安全問題。在Firefox首先我需要在Flash播放器設置管理器上添加可信賴的位置。如果我改變位置,它也不會在Firefox中工作。任何後? – abduIntegral 2013-04-30 09:15:46

+0

您是在本地還是在服務器上運行它? ExternalInterface在本地運行時被沙箱化,您應該嘗試在服務器上測試您的站點。 – pipwerks 2013-04-30 19:18:47