Flash中有什么变化吗?不久前我为一个我正在开发的网站制作了一个音乐可视化工具。它使用SoundMixer.computeSpectrum来获取音频中所有频率的电平。它对我来说很有用,它甚至可以播放页面上其他flash对象的音频,这对我来说很好,并且省去了尝试以某种方式将各种播放器对象的音频传输到可视化器的麻烦。
现在它不再起作用了。自从我上次测试以来,我对网站进行了更改,但我不认为这是问题所在。即使在同一个flash实例中,可视化工具也不再对任何音频做出任何响应。但是当我在可视化工具中播放音频时,在任何浏览器中帧速率都明显下降。如果我从使用Flash Player 9的Flash Professional CS3预览swf它可以正常工作,但对于浏览器中的Flash 11.3则不行。有人可以解释一下有什么变化以及我需要做些什么来使事情有效吗?
更新
以下是一些相关的代码。
var ba:ByteArray = new ByteArray();
addEventListener(Event.ENTER_FRAME,timerHandler);
function timerHandler(event:Event):void {
SoundMixer.computeSpectrum(ba, true);
}
我还将readFloat和writeFloat与字节数组一起使用。当然还有很多其他代码,但它在Flash 9中都可以正常工作。
答案 0 :(得分:1)
我遇到了同样的问题,我正在努力解决它。
我有参考资料,你介意看看吗?
Adobe论坛:SoundMixer.computeSpectrum()无效http://forums.adobe.com/thread/67089
Kirupa论坛:时间轴上的声音:SoundMixer.computeSpectrum http://www.kirupa.com/forum/showthread.php?329632-Sound-on-timeline-SoundMixer-computeSpectrum
编辑2012/09/30
当您声明Sound
实例化时,如果您已将其编码为:
var sound:Sound = new Sound(new URLRequest("url"));
如果声音是Sound
实例的名称,而url是您要加载的声音的网址,请将其更改为:
var sound:Sound = new Sound(new URLRequest("url"), new SoundLoaderContext(0, true));
这应该有效。
答案 1 :(得分:1)
在flash v11.3中有一个缺陷导致computeSpectrum()返回不完整和空的数据。它尚未在最新的Flash播放器版本中修复(截至本文撰写时为v11.5)。
如果您将Flash播放器降级到v11.2,您将看到您的可视化工作方式与以往一样。
https://bugbase.adobe.com/index.cfm?event=bug&id=3222042
请对此错误进行投票,以便adobe修复它!!!
--- --- EDIT 现在已经修复了Flash Player 11.7!