JavaScript判断Flash SWF文件加载完毕的方法

作者:半夏时间:2026-10-28 13:19:46浏览:388

本文介绍如何在JavaScript中判断Flash SWF文件是否加载完毕。通过轮询调用Flash对象的IsPlaying()方法,若成功执行则视为加载完成并触发回调。考虑到单线程阻塞问题,建议读取TotalFrames属性作为辅助判断。文中附带了完整的Flash Player控制方法列表供参考。

Flash加载检测方案

在Web开发中,如何准确判断Flash SWF文件是否已完全加载是一个常见问题。

我们需要在Flash加载完成后,执行一个预设的JavaScript回调函数。

这个问题曾长期困扰作者,直到请教资深开发者后才找到解决思路。

对于部分开发者而言,这或许不是难题,但确实存在不知如何判断SWF加载状态的情况。

以往我们通常使用img.onload等事件来监听图片加载状态。

现在回到核心问题:如何判断一个Flash文件是否加载完毕?

主要方法是采用轮询机制,通过检测Flash的某个方法是否能正常运行来判断。

具体实现逻辑如下(伪代码示例):

轮询实现与注意事项


(function () { 
var flash = 网页上某个flash对象。 

var interval = setInterval(function () { 
try { 
if(flash.IsPlaying()) { //轮询flash的某个方法即可 
callBack && callBack.call(flash, args); //回调函数 
clearInterval(interval); 
} 
} catch (ex) { 

} 
}, 1000); 

var callBack = function () { 
alert('loaded'); 
} 
})();

在实际应用中,若将Flash放入setInterval或setTimeout的闭包中,可能因JavaScript单线程特性导致IsPlaying等函数调用异常或结果不准确。此时可采取临时解决方案:在轮询函数中读取Flash的TotalFrames属性,若能成功读取,即可认为Flash已完全加载至页面。

经测试该方法可行,但可能存在1至2秒的时间延迟。

如有错误欢迎指正。

Flash Player控制方法列表

以下附上可控制Flash Player的JavaScript方法列表:

Play():播放动画;StopPlay():停止动画;IsPlaying():判断动画是否正在播放;GotoFrame(frame_number):跳转到指定帧;TotalFrames():获取动画总帧数;CurrentFrame():返回当前动画所在帧数减1;Rewind():使动画返回第一帧;SetZoomRect(left,top,right,buttom):放大指定区域;Zoom(percent):改变动画大小;Pan(x_position,y_position,unit):使动画在x、y方向上平移;PercentLoaded():返回动画载入百分比;LoadMovie(level_number,path):加载动画;TGotoFrame(movie_clip,frame_number):movie_clip跳转到指定帧数;TGotoLabel(movie_clip,label_name):movie_clip跳转到指定标签;TCurrentFrame(movie_clip):返回movie_clip当前帧数减1;TCurrentLabel(movie_clip):返回movie_clip当前标签;TPlay(movie_clip):播放movie_clip;TStopPlay(movie_clip):停止movie_clip播放;GetVariable(variable_name):获取变量;SetVariable(variable_name,value):变量赋值;TCallFrame(movie_clip,frame_number):调用指定帧上的action;TCallLabel(movie_clip,label):调用指定标签上的action;TGetProperty(movie_clip,property):获取movie_clip指定属性;TSetProperty(movie_clip,property,number):设置movie_clip指定属性。

作者最新文章