仅在麦克风活动级别值更改时执行代码

时间:2016-10-09 18:28:03

标签: actionscript-3 microphone

我用麦克风输入动画一个嘴。我使用麦克风活动级别,可以提供大约0-10的数字。每个数字对应一个"口中的帧#34;电影剪辑,信号越大,嘴巴张开越宽。

麦克风活动级别不断返回一个值(可能每帧一次)。因此,即使水平保持相同一段时间(特别是在没有噪声的情况下为0),它仍然执行代码以进入该帧。

我想让代码只在数字改变时执行。

import flash.display.BitmapData;
import flash.display.Shape;


var myMic:Microphone = Microphone.getMicrophone();
//Security.showSettings(SecurityPanel.MICROPHONE);
myMic.setLoopBack(true);
myMic.setUseEchoSuppression(true);


stage.addEventListener(Event.ENTER_FRAME, stage_EnterFrame);

function stage_EnterFrame(e:Event){
    var num:Number = myMic.activityLevel * 1;
    trace(num);
    if (num == 0){
        mouth.gotoAndStop(1);
    } else if (num == 1){
        mouth.gotoAndStop(2);
    } else if (num == 2){
        mouth.gotoAndStop(3);
    } else if (num == 3){
        mouth.gotoAndStop(4);
    } else if (num == 4){
        mouth.gotoAndStop(5);
    } else if (num == 5){
        mouth.gotoAndStop(6);
    } else if (num == 6){
        mouth.gotoAndStop(7);
    } else if (num == 7){
        mouth.gotoAndStop(8);
    } else if (num == 8){
        mouth.gotoAndStop(9);
    } else if (num == 9){
        mouth.gotoAndStop(10);
    } else if (num == 10){
        mouth.gotoAndStop(11);
    }
}

1 个答案:

答案 0 :(得分:1)

所以只有在变化时才会显示出来吗?也许像是

newNum = mic.activityLevel

如果newNum!= oldNum { Gotoandstop(框架) }

oldNum = newNum