我想在ActionScript 3中测试和写入是否允许麦克风访问,但是现在,如果没有编译错误,它就不会问我麦克风访问,当我启动SWF文件时没有发生。
这是我的代码:
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 :(得分: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.names.length
对象之前,您还可以使用Microphone
验证是否安装了麦克风(至少一个):
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);
希望可以提供帮助。