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