[AS3]SoundMixer在同一个浏览器多个选项卡中无法工作
用SoundMixer的computeSpectrum() 方法提取声音数据并制作一个频谱图形是件很不错的事情,但是它却存在一些问题。
[问题描述]
浏览器:IE7
系统:WinXPSP2
两个不同域中各有一个swf同样使用SoundMixer.computeSpectrum() 方法提取声音数据,
1、在IE7中单独打开上面两个中的任意一个含SWF的网页,频谱图形都很正常。
2、打开2个IE7,分别用来打开上面两个含SWF的网页,频谱图形也正常。
3、打开一个IE7,新建两个选项开,用来打开上面包含两个SWF的网页,频谱图形不正常,测试抓取错误时看到Security Error :#2121。
[简单分析]
SoundMixer.computeSpectrum() 是抓取应用程序中的当前播放的混合声音的数据。通过上面3种情况下的测试,可以推测,虽然是同一个IE应用程序中的不同选项卡中,但是SWF仍然认为是在同一个应用程序中。
这对我们不是一件好事,因为很多人希望开新选项卡(无论是IE中还是FireFox中),而不是开新的窗口,如果多个不相干的网页中都要使用SoundMixer.computeSpectrum() 做频谱图,那么最终结果是由于安全限制问题,谁都无法正常显示(当然,并不影响声音的正常播放,只是无法成功抓取声音原始数据而已)。就算是使用跨域策略解决了访问问题,但是现实是我们更希望SoundMixer.computeSpectrum() 抓取的是自己的SWF中播放的声音数据,而不是所有SWF中播放的声音数据
[如何解决]
computeSpectrum是静态方法,所以无法创建SoundMixer的实例来使用它。唉,想不到解决的办法。等待Adobe解决
无解决办法。

Leave a Reply