关于AS3上的sound.extract

时间:2011-11-27 15:19:10

标签: actionscript-3 audio actionscript extract

我现在尝试使用Sound.extract()方法。它适用于声音对象使用Sound.load()直接加载声音数据,但是当我使用Sound.loadCompressedDataFromByteArray()放置声音数据时它不会处理任何信息。代码是这样的:

var s:Sound = new Sound();
s.addEventListener(ProgressEvent.PROGRESS,onProgress);
s.loadCompressedDataFromByteArray(bytes,8192);
bytes.position += 8192;

private function onProgress(e:ProgressEvent):void {
    var num: int = s.extract(buffer,8192);
    buffer.position += num;
    s.loadCompressedDataFromByteArray(bytes,8192);
}
当我使用Sound.extract()加载声音数据时,

Sound.load()方法返回读取的数据并正常运行。但是,当我使用Sound.loadCompressedDataFromByteArray()加载声音数据时,它不起作用(意味着返回0但不会抛出任何异常),即使它正确地抛出进度事件......

我的问题是这种限制是否在AS3中。

我只想得到任何了解AS3的人的建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题非常明显,我认为你不能正确理解sound.extract功能。 sound.extract方法是将原始声音数据从有效声音文件中提取到字节数组中(这意味着声音文件应该包含一些信息)。

所以, 1.从使用sound.load(req);加载外部声音文件的声音实例中提取数据到字节数组没有问题(仅在加载声音文件之后)2。此外,可以从中提取数据到字节数组中由库资产var sound:Sound = new MySound();实例化的声音变量。

毋庸置疑,应该有一些信息来提取数据。但在这种情况下,尝试从仅由Sound类实例化的变量中提取数据。 ie)var s:Sound = new Sound();。没有信息可以播放,但它是实例化的,因此在尝试extract

时不会抛出任何错误