【问题标题】:Actionscript 3: Error #1009动作脚本 3:错误 #1009
【发布时间】:2015-11-13 22:09:17
【问题描述】:

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

【问题讨论】:

  • 使用调试器获取实际的行号,这很有帮助。您还应该导入StatusEvent,而不仅仅是Microphone(这可能是问题所在)。 import flash.events.StatusEvent

标签: actionscript-3 flash actionscript


【解决方案1】:

您的错误来自这一行:

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

希望能有所帮助。

【讨论】:

  • 好的。我编辑了我的代码。现在没有错误,但它没有要求我要麦克风。
  • @MatR 为此,您可以使用Security.showSettings(SecurityPanel.MICROPHONE);,答案已编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多