flash - SampleDataEvent.data.writeFloat() - 为什么调用它两次?

原文 标签 flash actionscript-3 bytearray audio

以下是 Adob​​e Live Docs SampleDataEvent 的片段类(class)。它演示了如何通过将样本插入 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 个样本(当前的两倍)。这造成了一个可听见的间隙并点击了音频,但并没有让我明白为什么。也许你可以...

再次感谢 :)

最佳答案

它需要两次写入,因为它是立体声的。每个 channel 取一个样本。在这种情况下,写入的值是相同的,但是如果您想将声音 100% 平移到一侧,例如,您可以使用第一个(或第二个)writeFloat 写入值,并将 0 传递给另一个称呼。

关于flash - SampleDataEvent.data.writeFloat() - 为什么调用它两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970140/

相关文章:

c - 48字节二进制到6字节二进制

.net - 从 .NET Web 服务返回多个图像

flash - 在 Actionscript 2 中立即引用影片剪辑类实例

html - 如何从页面的 html 代码下载 .swf 文件?

java - Flash 中的 HTTP POST - 客户端在响应前关闭 TCP 连接

actionscript-3 - AS3 有类析构函数吗?

java - 如何将字节数组写入和读取到 Data Input 和 DataOutputStream

css - Flex ColumnSeries CSS填充未应用

java - 仅通过数据点已知的函数的数值积分 - 首选 AS3

flash - 如何从所有关键帧调整Flash对象