2015-11-13 92 views
0

如果在ActionScript 3中允許或不允許麥克風訪問,我想測試和寫入,但現在,如果沒有編譯錯誤,它不會問我麥克風訪問,我啓動SWF文件。Actionscript 3:錯誤#1009

這是我的代碼:

import flash.display.MovieClip; 
import flash.events.StatusEvent; 
import flash.media.Microphone; 


var mic:Microphone = Microphone.getMicrophone(); 

if(mic){ 
    mic.addEventListener(StatusEvent.STATUS, this.onMicStatus); 
} 

else{ 
    trace("No micro"); 
} 

function onMicStatus(event: StatusEvent): void { 
    if (event.code == "Microphone.Unmuted") { 
     trace("Microphone access was allowed."); 

    } else if (event.code == "Microphone.Muted") { 
    trace("Microphone access was denied."); 
    } 
} 
+0

使用調試器獲取實際行號,這很有幫助。你還應該導入'StatusEvent',而不是'Microphone'(這可能是問題)。 'import flash.events.StatusEvent' – BadFeelingAboutThis

回答

0

你的錯誤來自該行:

mic.addEventListener(StatusEvent.STATUS, this.onMicStatus); 

因爲Microphone.getMicrophone()可以返回null

如果Microphone.getMicrophone()返回null ,麥克風正在被其他應用程序使用,或者沒有麥克風安裝在系統上領導。要確定是否安裝了任何麥克風,請使用Microphone.names.length(不帶「s的麥克風」,Adobe文檔中有錯誤)。

因此,爲了避免這個錯誤,你可以使用一個簡單if聲明:

if(mic){ 
    mic.addEventListener(StatusEvent.STATUS, this.onMicStatus); 
} 

你也可以創建一個Microphone對象之前使用Microphone.names.length來驗證,如果你已經安裝了麥克風(至少一個) :

if(Microphone.names.length > 0){ 
    var mic:Microphone = Microphone.getMicrophone(); 
     mic.addEventListener(StatusEvent.STATUS, this.onMicStatus); 
} 

編輯:

要顯示Flash Player的「麥克風設置」面板(可讓用戶選擇Microphone.getMicrophone引用的麥克風),請使用Security.showSettings()。

要顯示Flash Player的麥克風設置面板中,你可以使用:

Security.showSettings(SecurityPanel.MICROPHONE); 

希望能有所幫助。

+0

好的。我編輯了我的代碼。現在沒有錯誤,但它並沒有要求我輸入麥克風。 – MatR

+0

@MatR爲此,您可以使用'Security.showSettings(SecurityPanel.MICROPHONE);',回答編輯。 – akmozo