0

AS3 computeSpectrum を使用していくつかの曲のビデオ アニメーションを作成する 5 つの Flash アニメーションがあります。

Chrome、Firefox、Opera、Safari で問題なくテストされています。IE7 と IE8 で問題なくテストされています。IE9 でテストしたところ、Flash Player は開きますが、音楽は再生されず、アニメーションも開始しません。これは 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 アニメーションがあります。つまり、ブラウザのキャッシュが空で、ページを 1 回読み込むと再生されます。ページをリロードするか、別のページにアクセスした後にそのページに戻った場合、キャッシュを再度空にするまで、アニメーションと音楽は再生されません。

また、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 に答える