1

有很多人抱怨 SWF 上的加载时间很慢,但这似乎很好。

我想在 SWFObject javascript 中添加一个加载计时器,以计算加载 SWF 所需的时间,然后将其发送回给我们(我将通过 AJAX 来完成)。

我已经研究了 SWFObject 回调的可能性,它每 10 毫秒启动一个计时器,然后一旦成功就会停止。但是,看看这个,如果嵌入成功,这只是一个开关,而不是加载。

    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

您还可以查询 SWF 的PercentLoaded属性,而无需向 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

对于那些有兴趣的人;解决此问题的唯一方法是让 flash 拨打电话:

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

然后 some_js_function() 可以在页面加载时停止我设置的计时器运行。

于 2011-10-10T13:31:14.890 回答