萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> js怎麼判斷flash swf文件是否加載完畢

js怎麼判斷flash swf文件是否加載完畢

  js怎麼判斷flash是否加載完畢了呢?

  我們怎麼在flash加載完畢之時,回調一個我們設定的js函數?

  這個問題,一直困擾了我很久,直到今天,請教了一個非常牛B的人物之後,突然來了感覺!

  呵呵,也許,這個問題在你們看來不是問題,不過對於我來說,確實是個問題,因為我一直不知道該怎麼判斷swf文件是否加載完畢了?

  從前都是只知道img.onload等等。

  好了,言歸正傳,我們到底該怎樣判斷一個flash是否加載完了呢?

  沒錯,就是輪詢,然後判斷flash的某個方法是否能正常運行?

  示例如下(偽代碼):

01 (function () {  02 var flash = 網頁上某個flash對象。  03    04 var interval = setInterval(function () {  05 try 06 if(flash.IsPlaying()) { //輪詢flash的某個方法即可  07 callBack && callBack.call(flash, args); //回調函數  08 clearInterval(interval);  09 10 } catch (ex) {  11    12 13 }, 1000);  14    15 var callBack = function () {  16 alert('loaded');  17 18 })();

  //具體運用時,flash放進setInterval或者setTimeout的函數閉包中時,可能會由於JavaScript單線程問題,導致flash不能調用IsPlaying等flash player函數或者調用結果不對等狀況,這裡有個臨時的解決辦法,我們可以讀取在輪詢函數中讀取flash的TotalFrames屬性,讀取得到,我們就可以認為flash已經完全加載到頁面中了!!!

  經測試,確實可行,不過可能會有1—2秒的時間延遲。

  /////////////有什麼不對的地方,歡迎勘誤!!!!!!!!!//////////////

  /*後面附上可控制Flash Player的js方法列表*/

  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)---call指定幀上的action

  TCallLabel(movie_clip,label)----------------call指定標簽上的action

  TGetProperty(movie_clip,property)--------獲取movie_clip的指定屬性

  TSetProperty(movie_clip,property,number)-設置movie_clip的指定屬性

copyright © 萬盛學電腦網 all rights reserved