Actionscript 3:错误#1009

问题描述:

如果在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

你的错误来自该行:

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