Flash 我应该如何判断闪存已加载完成

Flash 我应该如何判断闪存已加载完成,flash,swfobject,Flash,Swfobject,在我们的网站上,我将flash builder制作的flash嵌入到html中,flash的大小超过了2M。由于网络故障,加载闪存可能需要30秒。我如何知道flash已完全通过浏览器加载 您可以轮询SWF以获取其加载百分比值 这里有一种方法(代码复制自): 功能swfLoadEvent(fn){ //确保fn是有效的函数 if(typeof fn!=“函数”){return false;} //此超时可确保我们不会尝试过早访问已加载的百分比 var initialTimeout=setTimeo

在我们的网站上,我将flash builder制作的flash嵌入到html中,flash的大小超过了2M。由于网络故障,加载闪存可能需要30秒。我如何知道flash已完全通过浏览器加载

您可以轮询SWF以获取其
加载百分比

这里有一种方法(代码复制自):

功能swfLoadEvent(fn){
//确保fn是有效的函数
if(typeof fn!=“函数”){return false;}
//此超时可确保我们不会尝试过早访问已加载的百分比
var initialTimeout=setTimeout(函数(){
//确保Flash Player的PercentLoaded方法可用并返回一个值
如果(类型e.ref.PercentLoaded!=“未定义”&&e.ref.PercentLoaded()){
//设置计时器以定期检查加载百分比的值
var loadCheckInterval=setInterval(函数(){
//一旦value==100(完全加载),我们可以做任何我们想做的事情
如果(e.ref.PercentLoaded()==100){
//执行函数
fn();
//清除计时器
clearInterval(loadCheckInterval);
}
}, 1500);
}
}, 200);
}
//创建后,SWFObject将调用此函数
var callback=函数(e){
//仅在SWFObject嵌入成功时执行
如果(!e.success | | |!e.ref){return false;}
swfLoadEvent(函数(){
//把你的代码放在这里
警报(“SWF已完成加载!”);
});
};
嵌入swf(“movie.swf”、“flashcontent”、“550”、“400”、“9”、false、false、false、false、callback);

pipwerks的答案很好。 您甚至可以得到更低的值:只有100个才可以,而不是1500个

但我在Firefox上遇到了一些问题。 initialTimeout应该是一个时间间隔,而不是一个超时,因为在FF上,有时在第一次调用时,您会有未定义的e.ref.PercentLoaded,但下一次调用就可以了。 当然,您需要调用clearInterval(initialTimeout);如果是真的

所以你会得到这样的结果:

    var initialTimeout = setInterval(function (){
     if(typeof e.ref.PercentLoaded !== "undefined" && e.ref.PercentLoaded()){
         clearInterval(initialTimeout);

你应该考虑一个预加载器。用加载条加载一个小swf,加载条加载并显示2M swf的进度。在函数swfLoadEvent中,e是什么意思?它是一个事件处理程序,是swfobject回调系统的一部分。看到和
    var initialTimeout = setInterval(function (){
     if(typeof e.ref.PercentLoaded !== "undefined" && e.ref.PercentLoaded()){
         clearInterval(initialTimeout);