动作脚本3:错误#1009

时间:2015-11-13 22:09:17

标签: actionscript-3 flash actionscript

我想在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.");
    }
}

1 个答案:

答案 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);

希望可以提供帮助。