关于声音.在AS3上提取



我现在尝试使用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的人的建议。

谢谢! !

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

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

不用说,应该有一些信息来提取数据。但是在这种情况下,尝试从刚刚由Sound类实例化的变量中提取数据。例如,var s:Sound = new Sound();。没有任何信息可以播放,但它是实例化的,所以在尝试extract

时不会抛出任何错误

最新更新