儘管 SeekBar 和 VolumeBar 組件具有不同的功能,但仍有些類似。這兩種組件都有控制點、都使用相同的控制點追蹤機制,並且都支援巢狀的片段以追蹤進度和完整性。
FLVPlayback 組件中的 ActionScript 程式碼有許多地方都假設 SeekBar 或 VolumeBar 組件的註冊點 (也稱為「原點」或「零點」) 位於內容的左上角,因此,請務必維持這個慣例。否則,您的控制點以及進度和完整性影片片段可能發生問題。
雖然外觀元素 SWF 檔中的搜尋列由於必須在執行階段縮放而使用了 9 分割縮放,但 SeekBar FLV 自訂 UI 組件因為具有巢狀影片片段,以致既不會也「無法」使用 9 分割縮放。如果您想要讓 SeekBar 變得更寬或更高,可能就得變更其內容而非縮放組件。
控制點
控制點影片片段的實體是在「影格 2」上。和 BackButton 及 ForwardButton 組件一樣,組件絕對不會真的進行到「影格 2」;因為放置在這裡的這些影片片段,是為了能夠更方便地進行編輯,並強迫這些影片片段載入至 SWF 檔,而不需選取「元件屬性」對話方塊中的「匯出在第一個影格」核取方塊。然而,您還是必須選取「匯出給 ActionScript 使用」選項。
您可能會注意到,控制點影片片段的背景具有 Alpha 設為 0 的矩形。這個矩形會增加控制點作用區域的大小,以便更輕易地擷取,而不需要將它的外觀變更為類似按鈕的感應狀態。由於控制點是在執行階段動態建立的,所以一定是影片片段,而不是按鈕。這個 Alpha 設為 0 的矩形並非絕對必要,您通常可以使用任何想要的影像來取代控制點的內部。不過,最好應將註冊點置中對齊控制點影片片段的中央。
下列 ActionScript 程式碼位於 SeekBar 組件的「影格 1」,用來管理控制點:
stop();
handleLinkageID = "SeekBarHandle";
handleLeftMargin = 2;
handleRightMargin = 2;
handleY = 11;
由於「影格 2」的內容之故,必須呼叫
stop()
函數。
第二行指定要將哪個元件當做控制點;若您只是編輯「影格 2」上的控制點影片片段實體,就不需要變更這項設定。在執行階段,FLVPlayback 組件將於「舞台」上建立指定影片片段的實體成為 Bar 組件實體的同級實體,亦即兩者具有相同的父影片片段。因此,如果您的列位於根層級,則控制點一定也會在根層級。
變數
handleLeftMargin
會判斷控制點的原始位置 (0%),而變數
handleRightMargin
則判斷控制點將在何處結束 (100%)。這些數字代表列控制項從左到右的位移,正數標示列內的周圍限制,而負數標示列的外圍限制。這些位移會根據控制點的註冊點,指定控制點可以到達的位置。如果您將註冊點放在控制點的中央,則控制點的最左邊和最右邊將會超出邊界。搜尋列影片片段的註冊點必須放在內容的左上角,才能正常地運作。
變數
handleY
會判斷控制點相對於列實體的
y
位置。這是根據每個影片片段的註冊點來決定。樣本控制點中的註冊點位於三角形的尖端,放在相對於可見部位的地方,與隱藏的感應狀態矩形無關。此外,列影片片段的註冊點必須保持在內容的左上角,才能正常地運作。
因此,根據這些限制,如果列控制項設定在 (100, 100) 位置,且其寬度為 100 像素,則控制點的範圍介於水平 102 至 198 像素,並垂直保持 111。如果您將
handleLeftMargin
和
handleRightMargin
變更為 -2,且將
handleY
變更為 –11,則控制點的範圍介於水平 98 至 202 像素,並垂直保持 89。
進度和完整性影片片段
SeekBar 組件具有「進度」影片片段,而 VolumeBar 具有「完整性」影片片段,但實際上,任何 SeekBar 或 VolumeBar 都可能具有其中一種影片片段,或是兩種影片片段都有或都沒有。就結構上來看,它們是相同的,且行為也很類似,但不同的是,它們追蹤不同的值。當 FLV 檔下載時,進度影片片段會填滿 (只能用於 HTTP 下載,因為如果從 FMS 進行串流處理,則會永遠是填滿的),而當控制點從左向右移動時,完整性影片片段就會填滿。
FLVPlayback 組件會藉由尋找特定的實體名稱,以找出這些影片片段實體,因此,您的進度影片片段實體必須具有與父影片片段一樣的列影片片段,並且具有實體名稱 progress_mc。完整性影片片段實體則必須具有實體名稱 fullness_mc。
您可以設定內含或不含巢狀 fill_mc 影片片段實體的進度和完整性影片片段。VolumeBar fullness_mc 影片片段會顯示「具有」fill_mc 影片片段的方法,而 SeekBar progress_mc 影片片段會顯示「沒有」fill_mc 影片片段的方法。
當您想要使用不會縮放且不會扭曲外觀的填色時,具有巢狀 fill_mc 影片片段的方法會很有用。
在 VolumeBar fullness_mc 影片片段中,巢狀 fill_mc 影片片段實體會以遮色處理。您可以在建立影片片段時將它遮色,或是在執行階段動態建立遮色片。如果您使用影片片段做為遮色片,請將實體命名為
mask_mc
並加以設定,使 fill_mc 能夠如百分比為 100% 般顯示出來。如果您不遮色處理 fill_mc,動態建立的遮色片將會是矩形,且大小與 fill_mc 以 100% 顯示時的大小相同。
fill_mc 影片片段將以兩種遮色片方式之一呈現,視 fill_mc.slideReveal 為
true
或
false
而定。
如果 fill_mc.slideReveal 為
true
,則 fill_mc 會從左向右移動,透過遮色片顯露。若百分比為 0%,便會向左移動,如此一來,透過遮色片便沒有東西可顯露。隨著百分比的增加,它會漸漸向右移動,直到百分比為 100%,再返回建立所在的「舞台」位置。
如果 fill_mc.slideReveal 為
false
或未定義 (預設行為),則遮色片會從左向右重新調整大小,以呈現更多 fill_mc。當百分比為 0% 時,遮色片會水平縮放至 05,而隨著百分比增加,
scaleX
會一直增加至 100%,此時便會呈現完整的 fill_mc。您不需要將
scaleX
設定為 100,因為 mask_mc 可能已經在建立時進行縮放。
沒有 fill_mc 的方法比具有 fill_mc 的方法來得簡易,但會水平扭曲填色。如果不希望出現扭曲,您必須使用 fill_mc。SeekBar progress_mc 會說明這個方法。
進度或完整性影片片段會依百分比進行水平縮放。百分比為 0% 時,實體的
scaleX
是設定為 0,讓它隱藏起來。隨著百分比增加,
scaleX
會跟著調整到 100%,而片段的大小將與當初在「舞台」上建立時的大小相同。同樣地,您不需要將
scaleX
設定為 100,因為片段實體可能已經在建立時進行縮放。