|
Niestandardowe składniki UI FLV Playback umożliwiają dostosowywanie elementów sterowania FLVPlayback w pliku FLA oraz umożliwiają wyświetlanie rezultatów na podglądzie strony WWW. Te składniki nie mogą być jednak skalowane. Klip filmowy oraz jego treść należy edytować, aby określić odpowiednią wielkość klipu. Z tego względu zwykle najlepiej jest ustawić na stole montażowym składnik FLVPlayback żądanej wielkości, a dla właściwości
scaleMode
ustawić wartość
exactFit
.
W celu rozpoczęcia przeciągnij żądane niestandardowe składniki UI FLV Playback z panelu Składniki, umieść je w żądanym miejscu na stole montażowym, a następnie nadaj im nazwy.
Te składniki mogą działać bez kodu ActionScript. Jeśli zostaną umieszczone na tej samej osi czasu i w tej samej klatce, co składnik FLVPlayback, a w składniku nie ustawiono żadnej karnacji, wówczas składnik FLVPlayback połączy się automatycznie z tymi składnikami. Jeśli na stole montażowym istnieje wiele składników FLVPlayback lub jeśli niestandardowy element sterowania i instancja FLVPlayback nie znajdują się na tej samej osi czasu, wówczas wymagane jest wybranie opcji Operacja.
Składniki umieszczone na stole montażowym można edytować w taki sam sposób, jak każdy inny symbol. Po otwarciu składników widoczne jest, że każdy z nich jest ustawiony w sposób inny niż pozostałe.
Składniki Button
Składniki Button mają podobną strukturę. Do przycisków należą: BackButton, ForwardButton, MuteButton, PauseButton, PlayButton, PlayPauseButton i StopButton. Dla większości z nich w klatce 1 istnieje pojedynczy klip filmowy o nazwie instancji placeholder_mc. Jest to zwykle instancja stanu normal dla przycisku, jednak nie musi tak być. Na klatce 2 istnieją cztery klipy filmowe na stole montażowym dla każdego stanu wyświetlania: normal, over, down i disabled. (W czasie wykonywania składnik nigdy nie przechodzi do klatki 2; te klipy filmowe są dostępne, ponieważ ułatwiają edycję i mogą być ładowane do pliku SWF bez konieczności zaznaczania pola wyboru Eksport w pierwszej klatce w oknie dialogowym Właściwości symbolu. Konieczne jest jednak wybranie opcji Eksportuj do ActionScript).
W celu określenia karnacji dla przycisku należy przeprowadzić edycję każdego z tych klipów filmowych. Możliwa jest zmiana wielkości, a także wyglądu.
Część kodu ActionScript zwykle znajduje się w klatce 1. Zmiana tego skryptu nie powinna być konieczna. Skrypt zatrzymuje głowicę odtwarzania na klatce 1 i określa klipy filmowe, które będą używane dla określonych stanów.
Przyciski PlayPauseButton, MuteButton, FullScreenButton i CaptionButton
Przyciski PlayPauseButton, MuteButton, FullScreenButton i CaptionButton są skonfigurowane inaczej niż inne przyciski; dla nich istnieje tylko jedna klatka z dwoma warstwami i bez skryptu. Ta klatka — w przypadku składnika PlayPauseButton (przyciski Odtwórz i Wstrzymaj) — zawiera dwa przyciski: jeden powyżej drugiego; w przypadku składnika MuteButton są to dwa przyciski: Wycisz i Włącz dźwięk; w przypadku składnika FullScreenButton są to dwa przyciski: przycisk włączenia i wyłączenia trybu pełnoekranowego; w przypadku składnika CaptionButton są to przyciski włączenia i wyłączenia napisów. W celu ustawienia karnacji dla tych przycisków należy zdefiniować karnację dla każdego z dwóch przycisków wewnętrznych, co zostało opisane w sekcji
Tworzenie karnacji dla poszczególnych niestandardowych składników UI FLV Playback
; wykonywanie innych czynności nie jest wymagane.
Składnik CaptionButton jest przeznaczony dla składnika FLVPlaybackCaptioning i musi być dołączony do tego składnika, a nie do składnika FLVPlayback.
Przyciski BackButton i ForwardButton
Przyciski BackButton i ForwardButton również ustawione są w sposób inny niż inne przyciski. W klatce 2 istnieją dla nich dodatkowe klipy filmowe, które mogą być używane jako klatka wokół jednego lub obydwu tych przycisków. Te klipy filmowe nie są wymagane i nie udostępniają żadnych specjalnych funkcji; zostały wprowadzone wyłącznie w celu ułatwienia korzystania z programu. W celu użycia klipu wystarczy przeciągnąć go na stół montażowy z panelu Biblioteka, a następnie umieścić je w żądanym miejscu. Jeśli klipy nie są wymagane, nie należy ich używać lub należy je usunąć z panelu Biblioteka.
Większość dostępnych przycisków jest oparta na wspólnym zestawie klipów filmowych, dlatego możliwa jest zmiana wyglądu wszystkich przycisków jednocześnie. Użytkownik może wykorzystać tę zależność lub zastąpić te wspólne klipy i zdefiniować inny wygląd dla każdego przycisku.
Składnik BufferingBar
Składnik paska buforowania działa bardzo prosto: zawiera animację, która zostaje wyświetlona, gdy składnik przechodzi do stanu buforowania i nie jest wymagany specjalny kod ActionScript w celu skonfigurowania tego składnika. Domyślnie jest to pasek z segmentami, który jest przesuwany z lewej na prawą stronę. Dla paska zdefiniowana jest prostokątna maska, dzięki której uzyskuje on wygląd obrotowego słupa z paskiem, ale w tej konfiguracji nie ma niczego szczególnego.
Paski buforowania w plikach SWF karnacji korzystają z 9-warstwowej skali, ponieważ muszą być skalowane w środowisku wykonawczym — niestandardowy składnik UI BufferingBar FLV nie korzysta i
nie może
korzystać z 9-plastrowej skali, ponieważ zawiera on zagnieżdżone klipy filmowe. Jeśli wymagane jest poszerzenie i zwiększenie wysokości składnika BufferingBar, wówczas zamiast skalować go należy zmienić jego zawartość.
Składniki SeekBar i VolumeBar
Składniki SeekBar i VolumeBar są do siebie podobne, ale mają inne funkcje. Każdy z nich zawiera uchwyty, korzysta z tych samych mechanizmów śledzenia uchwytu i obsługuje klipy zagnieżdżone w celu śledzenia postępu i stopnia ukończenia.
Istnieje wiele miejsc, w których kod ActionScript w składniku FLVPlayback przyjmuje, że punkt odniesienia (zwany również
punktem wyjściowym
lub
punktem zero
) na składniku SeekBar lub VolumeBar, znajduje się w lewym górnym rogu, dlatego ważne jest zachowanie takiej konwencji. W przeciwnym wypadku mogą pojawić się problemy z uchwytami oraz ze śledzeniem postępu i stopnia ukończenia klipów filmowych.
Paski wyszukiwania w plikach SWF karnacji korzystają z 9-warstwowej skali, ponieważ muszą być skalowane w środowisku wykonawczym — niestandardowy składnik UI SeekBar FLV nie korzysta i
nie może
korzystać z 9-plastrowej skali, ponieważ zawiera on zagnieżdżone klipy filmowe. Jeśli wymagane jest poszerzenie i zwiększenie wysokości składnika SeekBar, wówczas zamiast skalować go należy zmienić jego zawartość.
Uchwyt
Instancja klipu filmowego uchwytu znajduje się w klatce 2. Ten składnik — podobnie jak składniki BackButton i ForwardButton — nigdy nie przechodzi do klatki 2; te klipy filmowe są dostępne, ponieważ ułatwiają edycję i mogą być ładowane do pliku SWF bez konieczności zaznaczania pola wyboru Eksport w pierwszej klatce w oknie dialogowym Właściwości symbolu. Konieczne jest jednak wybranie opcji Eksportuj do ActionScript.
Widoczne jest, że klip filmowy uchwytu zawiera prostokąt w tle, dla którego wartość alfa wynosi 0. Ten prostokąt zwiększa obszar docelowy uchwytu, dzięki czemu łatwiej jest chwycić uchwyt bez zmiany jego wyglądu (podobnie jak w przypadku obszaru klikania przycisku). Uchwyt jest tworzony w sposób dynamiczny w środowisku wykonawczym, dlatego musi być klipem filmowym, a nie przyciskiem. Prostokąt z wartością alfa ustawioną na 0 nie jest wymagany z innych powodów i zwykle wnętrze uchwytu można wypełnić dowolnym obrazem. Najlepiej jest jednak, gdy środek punktu odniesienia znajduje się na tym samym poziomie, co linia środkowa klipu filmowego uchwytu.
Poniższy kod ActionScript znajduje się w klatce 1 składnika SeekBar i umożliwia zarządzanie uchwytem:
stop();
handleLinkageID = "SeekBarHandle";
handleLeftMargin = 2;
handleRightMargin = 2;
handleY = 11;
Wywołanie funkcji
stop()
jest niezbędne z powodu treści klatki 2.
Druga linia określa symbol, który będzie używany jako uchwyt i w przypadku prostej edycji instancji klipu filmowego uchwytu w klatce 2 zmiana tego symbolu nie powinna być konieczna. W środowisku wykonawczym składnik FLVPlayback tworzy instancję określonego klipu filmowego na stole montażowym jako element równorzędny instancji składnika Bar, co oznacza, że istnieje dla nich ten sam nadrzędny klip filmowy. Jeśli więc pasek znajduje się na poziomie głównym, uchwyt również musi być na poziomie głównym.
Zmienna
handleLeftMargin
określa początkowe położenie uchwytu (0%), a zmienna
handleRightMargin
określa jego położenie na końcu (100%). Liczby określają przesunięcie od lewego i prawego końca elementu sterowania paskiem. Liczby dodatnie określają granice na pasku, a ujemne określają granice poza paskiem. Te przesunięcia określają miejsca, w których uchwyt może się znaleźć w zależności od punktu odniesienia. Jeśli punkt odniesienia znajdzie się w środku uchwytu, prawa i lewa strona uchwytu znajdzie się za marginesami. Punkt odniesienia paska wyszukiwania musi znajdować się w lewym górnym rogu treści — tylko wówczas działa poprawnie.
Zmienna
handleY
określa położenie
y
uchwytu względem instancji paska. Jest to uzależnione od punktów odniesienia każdego klipu filmowego. Punkt odniesienia na przykładowym uchwycie znajduje się na końcu trójkąta — jest widoczny względem widocznej części bez względu na niewidoczny prostokąt docelowy. Ponadto punkt odniesienia klipu filmowego musi znajdować się w lewym górnym rogu treści — tylko wówczas działa poprawnie.
Dlatego jeśli przy uwzględnieniu tych granic element sterujący zostanie ustawiony w pozycji (100, 100) i ma 100 pikseli szerokości, wówczas uchwyt może mieć wielkość od 102 do 198 w poziomie i pozostawać na wysokości 111. Jeśli wartości
handleLeftMargin
i
handleRightMargin
zostaną zmienione na -2, a wartość
handleY
na -11, wówczas uchwyt może mieć wielkość od 98 do 202 w poziomie i pozostawać na wysokości 89.
Klipy filmowe postępu i stopnia ukończenia
Składnik SeekBar zawiera klip filmowy
progress
, a składnik VolumeBar zawiera klip filmowy
fullness
, ale w praktyce składniki SeekBar i VolumeBar mogą korzystać z jednego, żadnego lub obydwu tych klipów. Strukturalnie wyglądają tak samo i zachowują się podobnie, ale śledzą inne wartości. Klip filmowy postępu jest wypełniany podczas pobierania pliku FLV (jest to użyteczne jedynie dla pobierania z użyciem protokołu HTTP, ponieważ dla strumieniowania z FMS plik jest zawsze pełny), a klip filmowy stopnia ukończenia wypełniany jest podczas przesuwania się uchwytu od lewej do prawej.
Składnik FLVPlayback znajduje instancje tych klipów filmowych, wyszukując konkretnych nazw instancji, dlatego instancja klipu filmowego postępu musi mieć pasek klipu taki, jak jej element nadrzędny i nazwę instancji progress_mc. Instancja klipu filmowego stopnia ukończenia musi mieć nazwę instancji fullness_mc.
Klipy filmowe postępu i stopnia ukończenia można ustawić tak, aby klip filmowy fill_mc był w nich zagnieżdżony lub nie był zagnieżdżany. Klip filmowy VolumeBar fullness_mc wyświetla metodę
z
klipem filmowym fill_mc, a klip SeekBar progress_mc wyświetla metodę
bez
klipu fill_mc.
Metoda z zagnieżdżonym klipem filmowym fill_mc jest użyteczna, gdy konieczne jest wypełnienie, którego nie można przeskalować bez zniekształcenia wyglądu.
W klipie filmowym VolumeBar fullness_mc zagnieżdżona instancja klipu fill_mc jest maskowana. Maskę można nałożyć podczas tworzenia klipu filmowego lub zostanie ona utworzona dynamicznie w czasie wykonania. Jeśli klip maskowany będzie klipem filmowym, instancji należy nadać nazwę
mask_mc
i ustawić ją w celu wyświetlania fill_mc tak, jakby osiągnął wartość 100%. Jeśli fill_mc nie będzie maskowany, dynamicznie utworzona maska będzie prostokątna o rozmiarze takim samym jak fill_mc dla wartości 100%.
Klip filmowy fill_mc odsłaniany jest z maską na dwa sposoby w zależności od tego, czy właściwość fill_mc.slideReveal ma wartość
true
czy
false
.
Jeśli fill_mc.slideReveal ma wartość
true
, klip fill_mc zostanie przesunięty od lewej do prawej w celu uwidocznienia go przez maskę. Dla wartości 0% jest to cała lewa strona, dlatego żaden z klipów nie jest widoczny przez maskę. Wraz ze wzrostem wartości procentowej, klip przesuwany jest w prawą stronę, aż do osiągnięcia wartości 100%, a następnie powraca do miejsca na stole montażowym, w którym został utworzony.
Jeśli właściwość fill_mc.slideReveal ma wartość
false
lub jest niezdefiniowana (zachowanie domyślne), rozmiar maski zostanie zmieniony w celu odsłonięcia większego fragmentu klipu fill_mc. Dla wartości 0% maska jest skalowana do wartości 05 w poziomie i ze wzrostem wartości procentowej, zwiększa się parametr
scaleX
aż do 100%; odsłonięty zostanie wówczas cały klip fill_mc. Ustawienie właściwości
scaleX
= 100 nie jest niezbędne, ponieważ klip mask_mc mógł zostać przeskalowany w momencie utworzenia.
Metoda bez klipu fill_mc jest prostsza niż metoda z klipem fill_mc, ale powoduje zniekształcenie wypełnienia w poziomie. Aby uniknąć zniekształcenia, należy użyć klipu fill_mc. Proces ten ilustruje klip progress_mc składnika SeekBar.
Klip filmowy postępu lub stopnia ukończenia skalowany jest w poziomie w oparciu o wartość procentową. Dla wartości 0% właściwość
scaleX
instancji ustawiona jest na 0, co powoduje, że jest ona niewidoczna. Wraz ze wzrostem wartości procentowej właściwość
scaleX
jest uzgadniana, aż do osiągnięcia wartości 100%, wówczas klip ma rozmiar taki, jaki w chwili utworzenia. Ponownie, ustawienie właściwości
scaleX
= 100 nie jest niezbędne, ponieważ instancja klipu mask_mc mogłaby zostać przeskalowana w chwili utworzenia.
Łączenie niestandardowych składników UI FLV Playback
Jeśli niestandardowe składniki UI zostaną umieszczone na tej samej osi czasu i w tej samej klatce, co składnik FLVPlayback, a w składniku nie ustawiono właściwości
skin
, wówczas składnik FLVPlayback automatycznie połączy się z nimi bez konieczności użycia kodu ActionScript.
Jeśli na stole montażowym istnieje wiele składników FLVPlayback lub jeśli niestandardowy element sterowania i FLVPlayback nie znajdują się na tej samej osi czasu, należy wówczas napisać kod ActionScript w celu połączenia niestandardowych składników UI z instancją składnika FLVPlayback. Najpierw należy przypisać nazwę do instancji FLVPlayback, a następnie użyć kodu ActionScript, aby przypisać instancje niestandardowego składnika UI FLV Playback do odpowiednich właściwości FLVPlayback. W poniższym przykładzie instancją FLVPlayback jest my_FLVPlybk, nazwy właściwości FLVPlayback są poprzedzone kropkami (.), a instancje elementu sterującego niestandardowego UI FLV Playback znajdują się po prawej stronie znaków równości (=):
//FLVPlayback instance = my_FLVPlybk
my_FLVPlybk.playButton = playbtn; // set playButton prop. to playbtn, etc.
my_FLVPlybk.pauseButton = pausebtn;
my_FLVPlybk.playPauseButton = playpausebtn;
my_FLVPlybk.stopButton = stopbtn;
my_FLVPlybk.muteButton = mutebtn;
my_FLVPlybk.backButton = backbtn;
my_FLVPlybk.forwardButton = forbtn;
my_FLVPlybk.volumeBar = volbar;
my_FLVPlybk.seekBar = seekbar;
my_FLVPlybk.bufferingBar = bufbar;
Wykonanie poniższych kroków powoduje utworzenie niestandardowych elementów sterujących StopButton, PlayPauseButton, MuteButton oraz SeekBar:
-
Przeciągnij składnik FLVPlayback na stół montażowy i nadaj instancji nazwę
my_FLVPlybk
.
-
Ustaw parametr
source
za pomocą Inspektora składników na
http://www.helpexamples.com/flash/video/cuepoints.flv
.
-
Ustaw parametr Karnacja na wartość Brak.
-
Przeciągnij na stół montażowy składniki StopButton, PlayPauseButton, oraz MuteButton i umieść je nad instancją FLVPlayback, układając je pionowo w stos po lewej stronie. Nadaj każdemu z przycisków nazwę instancji w Inspektorze właściwości (np.
my_stopbttn
,
my_plypausbttn
i
my_mutebttn
).
-
W panelu Biblioteka otwórz folder FLVPlayback Skins, a następnie otwórz folder SquareButton.
-
Wybierz klip filmowy SquareBgDown i kliknij go dwukrotnie w celu otwarcia na stole montażowym.
-
Kliknij prawym przyciskiem (Windows) lub kliknij przytrzymując klawisz Control (Macintosh), wybierz z menu opcję Zaznacz wszystko i usuń symbol.
-
Wybierz narzędzie Owal, narysuj owal w tym samym miejscu i ustaw wypełnienie na niebieskie (
#0033FF
).
-
W Inspektorze właściwości ustaw szerokość (Sz:) na
40
i wysokość (W:) na
20
. Ustaw współrzędną x (X:) na
0.0
i współrzędną y (Y:) na
0.0
.
-
Powtórz kroki od 6 do 8 dla SquareBgNormal, zmieniając wypełnienie na żółte (
#FFFF00
).
-
Powtórz kroki od 6 do 8 dla SquareBgOver, zmieniając wypełnienie na zielone (
#006600
).
-
Dokonaj edycji klipów filmowych dla różnych ikon symboli w przyciskach (PauseIcon, PlayIcon, MuteOnIcon, MuteOffIcon i StopIcon). Pliki te można znaleźć w panelu Biblioteka w folderach FLV Playback Skins/
Label
Button/Assets, gdzie
Label
jest nazwą przycisku np. Odtwórz, Wstrzymaj itd. Dla każdego składnika wykonaj następujące czynności:
-
Wybierz opcję Zaznacz wszystko.
-
Zmień kolor na czerwony (
#FF0000
).
-
Przeskaluj składnik do 300%.
-
Zmień współrzędną X: położenie treści na
7.0
, aby zmienić ułożenie poziome ikony dla każdego stanu przycisku.
Uwaga:
Poprzez zmianę położenia w ten sposób użytkownik uniknie otwierania każdego stanu dla przycisku i przesuwania instancji klipu filmowego ikony.
-
Kliknij niebieską strzałkę Wstecz powyżej osi czasu, aby powrócić do sceny nr 1, klatki nr 1.
-
Przeciągnij na stół montażowy składnik SeekBar i umieść go w prawym dolnym rogu instancji FLVPlayback.
-
W panelu Biblioteka kliknij dwukrotnie składnik SeekBar, aby otworzyć go na stole montażowym.
-
Przeskaluj go do wartości 400%.
-
Zaznacz kontur i ustaw kolor na czerwony (
#FF0000
).
-
Kliknij dwukrotnie SeekBarProgress w folderze FLVPlayback Skins/Seek Bar i ustaw kolor na żółty (
#FFFF00
).
-
Kliknij dwukrotnie SeekBarHandle w folderze FLVPlayback Skins/Seek Bar i ustaw kolor na czerwony (
#FF0000
).
-
Kliknij niebieską strzałkę Wstecz powyżej osi czasu, aby powrócić do sceny nr 1, klatki nr 1.
-
Zaznacz instancję SeekBar na stole montażowym i nadaj instancji nazwę
my_seekbar
.
-
W panelu Operacje do klatki nr 1 na osi czasu dodaj instrukcję
importowania
dla klas wideo i przypisz nazwy dla przycisku i paska wyszukiwania do odpowiednich właściwości FLVPlayback tak, jak przedstawiono to w poniższym przykładzie:
import fl.video.*;
my_FLVPlybk.stopButton = my_stopbttn;
my_FLVPlybk.playPauseButton = my_plypausbttn;
my_FLVPlybk.muteButton = my_mutebttn;
my_FLVPlybk.seekBar = my_seekbar;
-
Naciśnij klawisze Control+Enter, aby przetestować film.
|
|
|