2016-10-09 3 views
-1

Я обнимаю рот с микрофонным входом. Я использую уровень активности микрофона, который поставляет числа от 0 до 10. Каждый номер соответствует кадрам в муви-клипе «рот», поэтому громче сигнал, чем шире открывается рот.Выполнять код только при изменении значения уровня активности микрофона

Уровень активности микрофона постоянно возвращает значение (возможно, работает один раз в каждом кадре). Поэтому, даже когда уровень остается неизменным на некоторое время (особенно при 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

Так что только exicute, если он изменится? Может быть что-то вроде

newNum = mic.activityLevel

Если newNum! = OldNum { Gotoandstop (рамка) }

oldNum = newNum