Actionscript 3 动作脚本3:错误#1009

Actionscript 3 动作脚本3:错误#1009,actionscript-3,flash,actionscript,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.ad

我想测试并写入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.");
    }
}

您的错误来自以下行:

mic.addEventListener(StatusEvent.STATUS, this.onMicStatus);
因为可以返回
null

如果麦克风.getMirror()返回null,则表示麦克风正在被其他应用程序使用,或者系统上没有安装麦克风。要确定是否安装了麦克风,请使用micromic.names.length(麦克风没有“s”,Adobe的文档中有一个错误)

因此,为了避免该错误,您可以使用一个简单的
if
语句:

if(mic){
    mic.addEventListener(StatusEvent.STATUS, this.onMicStatus);
}
在创建
麦克风
对象之前,您还可以使用
麦克风.names.length
验证是否安装了麦克风(至少一个):

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

要显示Flash Player麦克风设置面板,允许用户选择麦克风引用的麦克风。GetMirror,请使用Security.showSettings()

要显示Flash Player麦克风设置面板,您可以使用:

Security.showSettings(SecurityPanel.MICROPHONE);

希望能有所帮助。

使用调试器获取实际行号,这很有帮助。您还应该导入
StatusEvent
,而不仅仅是
麦克风
(这可能就是问题所在)<代码>导入flash.events.StatusEvent确定。我编辑了我的代码。现在没有错误,但它没有向我索要麦克风。@MatR为此,您可以使用
Security.showSettings(SecurityPanel.microscope),答案已编辑。