Flash AS3动画未在IE9中运行

时间:2012-07-04 12:03:45

标签: actionscript-3 flash internet-explorer-9

我有五个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在这里愚蠢的愚蠢废话有解释?我真的很想把这个东西放到床上。谢谢!

1 个答案:

答案 0 :(得分: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()