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.");
}
}
答
你的错误来自该行:
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);
希望能有所帮助。
使用调试器获取实际行号,这很有帮助。你还应该导入'StatusEvent',而不是'Microphone'(这可能是问题)。 'import flash.events.StatusEvent' – BadFeelingAboutThis