1

多くの人が SWF のロード時間が遅いと不満を言っていますが、この点では問題ないようです。

SWFObject javascript にロード タイマーを追加して、SWF のロードにかかる時間を計り、それを私たちに送り返したいと思います (私は AJAX 経由で行います)。

10ミリ秒ごとにタイマーを開始し、成功すると停止するSWFObjectコールバックの可能性を調べました。しかし、これを見ると、これは読み込みではなく、埋め込みが成功した場合の単なる切り替えです。

    function loadSWF(playURL){
      swfobject.embedSWF(playURL, "playdiv", "170", "90", "9.0.0", "expressInstall.swf", color:face00}, {wmode:"opaque",allowfullscreen:"true",allowScriptAccess:"always"}, '', function(e) { 

        var loadTimer = window.setInterval(function() {

            if(e.success) {

                milSeconds = milSeconds+10;
                clearInterval(loadTimer); alert('TIME ' + milSeconds);
            } else {

                milSeconds = milSeconds+10;

            }
        },10);          


    });
    }

それが私が今持っているものです。Obv は私たちが必要とすることをしません。

別の道をたどる人はいますか?

4

2 に答える 2

5

PercentLoadedSWF 自体にコードを追加しなくても、SWF のプロパティを照会することもできます。これを行うための簡単な(しかしずさんな)方法は次のとおりです。

var start_time, end_time, total_time;

function getCurrentTime(){ return new Date(); }

function checkSWFStatus(swf){
    if(swf.PercentLoaded() !== 100){
        setTimeout(function (){
            checkSWFStatus(swf);
        }, 50);
    } else {
        end_time = getCurrentTime();
        total_time = end_time-start_time;
        console.log("Ended: " +end_time);
        console.log("Total load time: approximately " +total_time +" milliseconds");
    }
}

var callback = function (e){

    if(e.success && e.ref){

        if(!start_time){
            start_time = getCurrentTime();
            console.log("Started: " +start_time);
        }

        //Ensure SWF is ready to be polled
        setTimeout(function checkSWFExistence(){
            if(typeof e.ref.PercentLoaded !== "undefined"){
                checkSWFStatus(e.ref);
            } else {
                checkSWFExistence();
            }
        }, 10);

    }

};

swfobject.embedSWF("yourmovie.swf", "targetelement", "550", "400", "9", false, false, false, false, callback);
于 2011-10-10T23:05:57.290 に答える
0

興味のある方へ。これを解決する唯一の方法は、フラッシュを取得して次のように呼び出すことでした。

ExternalInterface.call("some_js_function()", "the-argument");

some_js_function() は、ページの読み込み時に設定したタイマーを停止できます。

于 2011-10-10T13:31:14.890 に答える