0
我得到這個代碼,用於記錄用戶的聲音:錄音與計時器事件
public class Main extends Sprite
{
private var mic:Microphone;
private var waveEncoder:WaveEncoder = new WaveEncoder();
private var recorder:MicRecorder = new MicRecorder(waveEncoder);
private var recBar:RecBar = new RecBar();
private var tween:Tween;
private var fileReference:FileReference = new FileReference();
public function Main():void
{
recButton.stop();
activity.stop();
mic = Microphone.getMicrophone();
mic.setSilenceLevel(0);
mic.gain = 100;
mic.setLoopBack(true);
mic.setUseEchoSuppression(true);
Security.showSettings("2");
addListeners();
}
private function addListeners():void
{
recButton.addEventListener(MouseEvent.MOUSE_UP, startRecording);
recorder.addEventListener(RecordingEvent.RECORDING, recording);
recorder.addEventListener(Event.COMPLETE, recordComplete);
activity.addEventListener(Event.ENTER_FRAME, updateMeter);
}
private function startRecording(e:MouseEvent):void
{
if (mic != null)
{
recorder.record();
e.target.gotoAndStop(2);
recButton.removeEventListener(MouseEvent.MOUSE_UP, startRecording);
recButton.addEventListener(MouseEvent.MOUSE_UP, stopRecording);
addChild(recBar);
tween = new Tween(recBar,"y",Strong.easeOut, -recBar.height,0,1,true);
}
}
private function stopRecording(e:MouseEvent):void
{
recorder.stop();
mic.setLoopBack(false);
e.target.gotoAndStop(1);
recButton.removeEventListener(MouseEvent.MOUSE_UP, stopRecording);
recButton.addEventListener(MouseEvent.MOUSE_UP, startRecording);
tween = new Tween(recBar,"y",Strong.easeOut,0, - recBar.height,1,true);
}
private function updateMeter(e:Event):void
{
activity.gotoAndPlay(100 - mic.activityLevel);
}
private function recording(e:RecordingEvent):void
{
var currentTime:int = Math.floor(e.time/1000);
recBar.counter.text = String(currentTime);
if (String(currentTime).length == 1)
{
recBar.counter.text = "00:0" + currentTime;
}
else if (String(currentTime).length == 2)
{
recBar.counter.text = "00:" + currentTime;
}
}
private function recordComplete(e:Event):void
{
fileReference.save(recorder.output, "recording.wav");
}
}
我想,以取代計時器事件鼠標事件。如果持續時間== 5,則開始記錄並在10秒鐘後停止記錄。我混淆在哪裏添加我的計時器代碼是這樣的:
var myIntrotime:Timer = new Timer(1000,5);
myIntrotime.addEventListener(TimerEvent.TIMER, startIntroTime);
myIntrotime.start();
var SecondsElapsed:Number = 1;
function startIntroTime(event:TimerEvent):void
{
if (SecondsElapsed==5)
{
//start recording
//start another timer2 and if timer2 finished stop recording
}
SecondsElapsed++;
}
有人可以幫我嗎?
維斯珀謝謝。我刪除了鼠標事件偵聽器並使用了您的建議。黃昏!我怎麼可以多次在特定的框架中調用這個類?可能嗎?因爲在其他幀中,我需要不同的時間延遲。例如,在第1幀中,錄製時間爲45秒,下一幀爲60秒。 – Amir
嗯。您可以參數化初始化並在其他幀上手動寫入所需的時間。爲了多次調用一個函數,你仍然可以使用一個鼠標事件監聽器,它將包含一個'setTimeout()'調用或直接調用'startRecording()'和一個'setTimeout(stopRecording,<所需時間> )'電話。 – Vesper
假設這是您的程序中的建築物中的一個街區。當然你可以從其他地方調用這個塊,並且可以將它變成一個函數,它將在幾秒鐘內抓住你的時間,轉換爲毫秒,並在所需的時間調用開始和停止記錄功能。 – Vesper