Cum puteti inregistra si apoi asculta un sunet in actionscript 3.0
Clasa Sound va permite sa creati un obiect de tip sunet, sa incarcati un fisier de tip MP3 si sa ascultati acel fisier de sunet.
De la Flash Player 10 puteti folosi clasa Sound numai pentru a incarca si asculta fisiere de sunet, dar si posibilitatea de a lucra cu un sunet generat dinamic.
In acest caz, obiectul de sunet utilizeaza functia pe care o atribuiti unui handler Event.SAMPLE_DATA, sunetul fiind redat asa cum este preluat dintr-un obiect ByteArray.
private var mic:Microphone;
private var soundBytes:ByteArray = new ByteArray();
private function MicrophoneRecorder():void
{
mic = Microphone.getMicrophone();
mic.gain = 100;
mic.rate = 44;
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, onRecording);
}
private function onRecording(event:SampleDataEvent):void
{
while(event.data.bytesAvailable)
{
var sample:Number = event.data.readFloat();
soundBytes.writeFloat(sample);
}
}
private function onPlayback(event:SampleDataEvent):void
{
for (var i:int = 0; i < 8192 && soundBytes.bytesAvailable > 0; i++)
{
var sample:Number = soundBytes.readFloat();
event.data.writeFloat(sample);
event.data.writeFloat(sample);
}
}
private function stop(event:*):void
{
mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, onRecording);
soundBytes.position = 0;
var sound:Sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onPlayback);
sound.play();
}
In exemplul de mai jos am folosit doua pachete de clase (MicRecorder, as3wavsound) ce ne usureaza mult munca de salvare si encodare, noua nu ne mai ramane decat sa dam recorder.record() si recorder.stop().
import org.as3wavsound.WavSound;
import org.bytearray.micrecorder.MicRecorder;
import org.bytearray.micrecorder.encoder.WaveEncoder;
import org.bytearray.micrecorder.events.RecordingEvent;
private var recorder:MicRecorder;
private var wavEncoder:WaveEncoder;
private var volume:Number = 0.5;
private function MicrophoneRecorder():void
{
wavEncoder = new WaveEncoder(volume);
recorder = new MicRecorder(wavEncoder);
recorder.addEventListener(RecordingEvent.RECORDING, onRecording);
recorder.addEventListener(Event.COMPLETE, onRecordComplete);
}
private function onRecording(event:RecordingEvent):void
{
trace(event.time);
}
private function onRecordComplete(event:Event):void
{
var player:WavSound = new WavSound(recorder.output);
player.play();
}




