0

我有五个 Flash 动画,它们使用 AS3 computeSpectrum 为我的一些歌曲创建视频动画。

在 Chrome、Firefox、Opera 和 Safari 中测试很好。在 IE7 和 IE8 中测试就好了。在 IE9 中测试,flash 播放器打开,但音乐不播放,动画甚至不启动。这只发生在 IE9 中。

网页在这里:http ://seanmurphy.co.cc/index4.html

动画位于音乐选项卡下(底部选项卡,主屏幕)。

有没有人知道到底发生了什么?我已经确保 Flash 播放器是最新的(就像我说的,实际上卸载了 IE9,回到 IE8 并且工作正常)。我已确保链接的 mp3 文件位于根文件夹和附加的音频文件夹中(以防万一)。我已经对此进行了全面研究,但似乎没有人遇到同样的问题。

Flash AS3 代码如下:

var url:String = "SubwayGirl.mp3";
var request:URLRequest = new URLRequest(url);
import flash.filters.*;
import fl.motion.Color;
var myBlur:BlurFilter = new BlurFilter();
myBlur.quality = 10;
myBlur.blurX = 0;
myBlur.blurY = 6;
var s:Sound = new Sound();
s.addEventListener(Event.COMPLETE, completeHandler);
s.load(request);
var song:SoundChannel = s.play();
song.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
var ba:ByteArray = new ByteArray();
var gr:Sprite = new Sprite();
gr.x = 150;
gr.y = 575;
addChild(gr);
var time:Timer = new Timer(.0001);
time.addEventListener(TimerEvent.TIMER, timerHandler);
time.start();
function completeHandler(event:Event):void {
    //event.target.play();
};
function randomNumber(low:Number=0, high:Number=1):Number
{
  return Math.floor(Math.random() * (1+high-low)) + low;
}

function soundCompleteHandler(event:Event):void {
    time.stop();
};
function timerHandler(event:TimerEvent):void {  
    SoundMixer.computeSpectrum(ba, true);
    var i:int;
    gr.graphics.clear();
    gr.graphics.lineStyle(1, 0xffffff);
    myBlur.blurX = randomNumber(1, 5);
    myBlur.blurY = randomNumber(1, 25);
    myBlur.quality = randomNumber(1, 100);
gr.filters = [myBlur];
gr.graphics.beginFill(0xffffff);
gr.graphics.moveTo(10, 5);
var w:uint = 20;
for (i=0; i<500; i+=w) {
    var t:Number = ba.readFloat();
    var n:Number = (t * 100);
    gr.graphics.drawCircle(w, -i, -n);
    var yy = i * (t+210);
    var place = yy.toString(16).toUpperCase();
    while(place.length < 6) {
        place = place+"0";
    }
    place = "0x" + place;
    var myColor:ColorTransform = gr.transform.colorTransform;
    myColor.color = 0xC941D0;
    gr.transform.colorTransform = myColor;
};
};

有人对此有提示吗?我花了几个小时研究这个没有解决方案。

需要的任何进一步信息将尽快结束。谢谢。

编辑:好的,这是独家新闻:我在 IE9 的 seanmurphy.co.cc/soundTest1.html 上播放了 Flash 动画。也就是说,如果浏览器缓存被清空,并且您加载页面一次,它们就会播放。如果您重新加载页面,或者在访问另一个页面后返回该页面,动画和音乐将不会播放,直到您再次清空缓存。

同样,我已将 Flash 对象和嵌入代码复制到 seanmurphy.co.cc/index6.html 的临时索引文件中,但即使浏览器缓存清空,它们也无法播放。

正如你可能想的那样,这让我发疯了!有人对 IE 在这里拉的愚蠢废话有解释吗?我真的很想把这件事放在床上。谢谢!

4

1 回答 1

0

它可能与违反安全沙箱有关:

SecurityError: Error #2121: Security sandbox violation: 
SoundMixer.computeSpectrum: http://seanmurphy.co.cc/audio/IndianSummer-amped.swf 
cannot access http://seanmurphy.co.cc/audio/SubwayGirl.swf. 
This may be worked around by calling Security.allowDomain.
    at flash.media::SoundMixer$/computeSpectrum()
    at IndianSummer_fla::MainTimeline/timerHandler()
    at flash.utils::Timer/_timerDispatch()
    at flash.utils::Timer/tick()
于 2012-07-04T12:35:40.423 回答