2011-02-23 53 views
0

背景如何將按鈕式行爲添加到視頻播放器按鈕組件?

我試圖創建一個簡單的「通用」媒體播放器呈現的視頻和音頻播放相同的用戶界面(或儘可能相似)。不幸的是,據我所知,FLVPlayback似乎無法處理音頻文件,所以我使用了Sound和SoundChannel。

我的視頻播放是使用FLVPlayback組件進行處理的,FLVPlayback組件在需要時「動態」連接到標準控件。當我播放聲音時,我想要做的就是將它們連接到Sound/SoundChannel,以便在兩種情況下都能使用相同的UI小部件。我想避免從零開始構建所有組件,因爲FLVPlayback組件會免費提供許多好東西,但它開始顯得棘手。

戈裏東西

標準PlayPauseButton是具有兩個層,一個含有播放按鈕(和實例名稱爲play_mc)和含暫停按鈕(pause_mc)一個MovieClip。其中一個是這樣的一些代碼的電影:

stop(); 
this.upLinkageID = "PauseButtonNormal"; 
this.overLinkageID = "PauseButtonOver"; 
this.downLinkageID = "PauseButtonDown"; 
this.disabledLinkageID = "PauseButtonDisabled"; 

該電影有兩個幀。

第一幀是一個帶有實例名稱placeholder_mc的單個動畫片段。

在第二幀是按鈕狀態的實例,但它們沒有實例名稱(這會使事情變得更容易)。但是,它們是上面列出名稱的庫對象的實例。

我想要做的是編寫一個函數,當傳遞這些按鈕之一(pause_mc,比如說)時,它會自動爲其添加類似按鈕的行爲。我無法從Adobe的「文檔」中找到這一點,我該如何使用嵌入在影片剪輯代碼中的信息將placeholder_mc的內容與我想要的東西交換。

TL;博士

在本質上我只需要實現的功能set_instance所以,下面的代碼改變了按鈕的可視狀態如預期:

var my_button:MovieClip = pause_mc; 
my_button.addEventListener(MouseEvent.MOUSE_OVER, function(e:Event){ 
    set_instance(my_button.placeholder_mc, my_button.overLinkageID); 
}); 

回答

1

我試圖讓今天使用PlayPauseButton組件工作。看起來Adobe並沒有公開地製造我們正在尋找可用的鉤子:P。

我想出的解決方案是使用按鈕UI組件,並重新使其看起來像PlayPauseButton

可以挖個別按鈕狀態出兩個影片剪輯的(播放和暫停),包含PlayPauseButton組件內,爲它們指定實例名稱,然後使用這些使用setStyle()方法來設置按鈕的適當的皮膚性質。確保您還將按鈕調整爲23x23以避免拉伸。

+0

我很久以前就採用類似的方式實現了我的播放器。我把這個問題部分地作爲一個咆哮(AS3類庫在這方面是絕對可怕的,儘管它是一個「綠色領域」重寫同樣可怕的AS2類庫),部分希望有人會知道一個更聰明的解決方案,可以節省一些工作... – podperson

0

我通常只是做一個按鈕,然後將影片剪輯或某些顯示對象分配爲皮膚使用:

var myButton:Button = new Button(); 
myButton.setStyle('upSkin', new PlaySkin()); 
myButton.setStyle('selectedUpSkin', new PauseSkin()); 

然後,您的所有按鈕狀態將由Flash自動處理。對於PlayPause按鈕,可以將按鈕的「切換」屬性設置爲「true」,然後每次單擊該按鈕時,該按鈕將從所選皮膚切換到皮膚上並再次切換。

+0

你沒有回答這個問題。我知道如何讓按鈕工作。我不知道該怎麼做是讓視頻播放器的按鈕組件工作。當您將它們「掛鉤」到FLVPlayback組件時,這些按鈕可以正常工作,但我無法弄清楚如何處理FLVPlayback組件正在做的事情。 – podperson

相關問題