Ниже приведен фрагмент из класса Adobe Live Docs SampleDataEvent
. Он демонстрирует, как создать звуковую синусоидальную волну, помещая сэмплы в ByteArray
. Часть, над которой я зациклен, - это то, почему вам нужно дважды вставить одно и то же значение в метод writeFloat()
?
var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void
{
for ( var c:int=0; c<8192; c++ ) {
event.data.writeFloat( Math.sin((Number(c+event.position)/Math.PI/2))*0.25 );
event.data.writeFloat( Math.sin((Number(c+event.position)/Math.PI/2))*0.25 );
}
}
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator);
mySound.play();
В качестве теста я удалил один из вызовов writeFloat () и увеличил буфер до 16384 выборок (в два раза больше текущего). Это создало слышимый пробел и щелкнул в аудио, но мало объяснило мне, почему. Возможно, вы можете ...
Еще раз спасибо:)