0

从输入设备采样数据时,我是否可以调节闪存触发 SAMPLE_DATA 事件的频率?我需要不断地采样(甚至是沉默)。

var mySound:Sound = new Sound();
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);

AFAIK 目前这个函数被调用 20 次/秒

4

1 回答 1

2

使用来自http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/SampleDataEvent.html的示例代码

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();

你写的数据越少,方法被调用的频率就越高。

如果您经常调用它,声音可能会变得刺耳和粗糙。尝试调整帧速率。

于 2012-11-24T17:55:34.470 回答