2012-09-18 63 views
0

我創建一個自定義的視頻播放器Flex 4中,我需要創建一個自定義搜索欄,使得它具有三個層次,相同的YouTube視頻播放器欄控件。第一層是背景,第二層是下載進度,第三層是流逝的視頻。搜索欄也可以點擊。任何人都可以請指導我如何在Flex 4中創建這樣的組件。任何教程都會很棒。自定義視頻尋求的Flex 4

回答

2

不幸的是,我不相信內置的ScrubBar類具有此功能,所以你會過得更好構建它自己(而不是將它添加到這個類)。

要做到這一點,我將創建一個基於組新的MXML組件。在該組件中,您需要四件事:播放頭的條形圖/背景和橢圓(或另一個矩形或任何您想要的)的三個Rects。將它們層疊在一起。將背景矩形設置爲100%的高度和寬度,其他兩個僅爲100%的高度。

現在,你想要做的就是創建一個部分,並寫一些AS3處理的變化。請注意,這是我本人如何做到的,但不一定如何做到這一點。例如,我知道大多數人會對使用getter-setter的人感到不滿,但我認爲這是一個絕好的機會。

private var _progress:Number; //0-1 
private var _download:Number; //0-1 

public function set progress(value:Number):void{ 
    this._progress = value; 
    this.progressBar.percentWidth = value * 100; 
    this.playhead.x = value * this.width - this.playhead.width/2; 
    this.dispatchEvent(new Event(Event.PROGRESS)); //this line is optional and you would be better suited creating your own VideoEvent class to handle events across the entire player rather than using the built in events. 
} 

public function get progress():Number{ 
    return this._progress; 
} 

public function set download(value:Number):void{ 
    this._download = value; 
    this.downloadBar.percentWidth = value * 100; 
} 

public function get download():Number{ 
    return this._download; 
} 

顯然,這只是基礎知識。您可以深入其中並添加更多功能。例如,沒有用於清理播放頭或單擊進度欄來查找的功能。兩者都比較容易實現,但是,只要確保您派發事件,以便您可以從其他類中知道這些事情發生的時間。

現在,從您的視頻控件類中,您需要將您的scrubbar類的progressdownload屬性綁定到VideoDisplay或NetStream事件。要做到這一點,你只會添加到無論你使用監聽進度事件監聽器和緩衝的變化(不確定你會使用什麼的VideoDisplay,但對於NetStream的,你必須聽NetStatus.STATUS得到緩衝和其他好吃的東西,你必須創建一個Timer來監聽進度,不幸的是)。在每個相應的函數中,只需將適當的屬性設置爲VideoDisplay或NetStream對象爲您提供的值(在NetStream的情況下,當前時間爲ns.time,下載爲ns.bytes)。

我只是掠過你需要做什麼,但這樣應該可以給你提供足夠的想法就此開始工作。

+0

Thanx的幫助。 –

+0

謝謝,使用Group的好主意 – Tchakabam