我用麦克风输入动画一个嘴。我使用麦克风活动级别,可以提供大约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);
}
}
答案 0 :(得分:1)
所以只有在变化时才会显示出来吗?也许像是
newNum = mic.activityLevel
如果newNum!= oldNum { Gotoandstop(框架) }
oldNum = newNum