2011-10-05 44 views
1

im flash和actionscript。ActionScript ProgressBar ProgressBarMode.EVENT

有問題的頁面可以看到here

我的AS代碼:

import fl.video.*; 
import fl.controls.ProgressBar; 
import fl.controls.ProgressBarMode; 
import flash.events.ProgressEvent; 
import fl.events.ComponentEvent; 

// FLVplayback control 
splashVid.visible = false; 

progressBar.mode = ProgressBarMode.EVENT; 
progressBar.indeterminate = false; 
progressBar.source = splashVid; 

progressBar.addEventListener(Event.COMPLETE, doSwitch); 
progressBar.addEventListener(ProgressEvent.PROGRESS, progressHandler); 

function progressHandler(event:ProgressEvent):void 
{ 
    iLabel.text = Math.round(event.bytesLoaded).toString(); 
} 

function doSwitch(e:Event):void 
{ 
    iLabel.text = "loaded"; 
} 

的問題是,雖然progressHandler回調正常工作(使用ProgressEvent.PROGRESS)。 doSwitch回調從不觸發(Event.COMPLETE)。

您能否在我的方法中解釋錯誤?

目標:我正在嘗試加載固定大小的mp4,然後使用COMPLETE事件來呈現影片剪輯的控件。

謝謝。

編輯:測試完成後事件現在會觸發,但在整個剪輯播放後觸發。一旦視頻文件被加載但沒有播放,我將如何去發射event.complete?謝謝。

編輯:我可以在progressHandler中執行bytesloaded和totalbytes之間的比較...但問題是進度動畫永遠不會完全完成,我想在切換顯示設置之前顯示完整的進度條。

編輯:進度條完成加載動畫,如果我不隱藏它,一旦完整的文件已被加載,以照顧我的問題。

但是,我仍然打開關於是否有更好的方式來做這個使用某種完整的事件,一旦源mp4文件完全下載後觸發的技巧。謝謝。

回答

1

假設你使用的是FLVPlayer

不確定您的命名約定,但如果我讀的代碼正確splashVid是你FLVplayer的實例名稱。
所以你需要做的是聽播放器,而不是進度條。
由於每DOCS

splashVid.addEventListener(VideoEvent.READY, doSwitch); 

如果這是不正確的,你需要刪除所有編輯和發佈1級的問題,關於您的應用程序更多的細節。

+0

VideoEvent.READY通知元數據如持續時間,並在加載請求時觸發,而不是在整個剪輯準備好/已下載時觸發​​。 – iTEgg