Tworzenie nowej karnacji

Najlepszym sposobem na utworzenie pliku SWF karnacji jest skopiowanie jednego z plików karnacji dostarczonego z programem Flash i użycie go jako punktu wyjściowego. Pliki FLA dla tych karnacji można znaleźć w folderze Configuration/FLVPlayback Skins/FLA/ActionScript 3.0/ w aplikacji Flash. Aby udostępnić ukończony plik SWF karnacji jako opcję w oknie dialogowym Wybierz karnację, należy umieścić ją w folderze Configuration/FLVPlayback Skins/ActionScript 3.0 aplikacji Flash lub w folderze lokalnym użytkownika Configuration/FLVPlayback Skins/ActionScript 3.0.

Ponieważ kolor karnacji można ustawić niezależnie od wybieranej karnacji, edycja pliku FLA w celu modyfikacji koloru nie jest konieczna. Jeśli utworzona zostanie karnacja z konkretnym kolorem, który ma być nieedytowalny w oknie dialogowym Wybierz karnację należy w kodzie ActionScript pliku FLA ustawić this.border_mc.colorMe = false; . Informacje o ustawianiu koloru karnacji zawiera sekcja Wybór wstępnie zaprojektowanej karnacji .

Podczas przeglądania zainstalowanych plików FLA karnacji Flash, może wydawać się, że pewne rzeczy na stole montażowym są niepotrzebne, ale wiele z nich zostało umieszczonych na liniach pomocniczych. Za pomocą podglądu aktywnego skalowania 9-plastrowego możliwy jest szybki podgląd tego, co rzeczywiście zostanie wyświetlone w pliku SWF.

Następujące sekcje zawierają bardziej złożone dopasowania i zmiany klipów filmowych SeekBar, BufferingBar i VolumeBar.

Korzystanie z układu karnacji

Po otworzeniu pliku FLA karnacji Flash na głównej osi czasu ułożone będą klipy filmowe karnacji. Klipy te wraz z kodem ActionScript tej samej klatki definiują sposób, w jaki elementy sterujące układane będą w czasie wykonywania.

Mimo że warstwa Układ wygląda podobnie, jak karnacja w czasie wykonywania, treść tego układu w czasie wykonywania jest niewidoczna. Używany jest on jedynie do obliczania miejsc, w których rozmieszczone zostaną elementy sterujące. Pozostałe elementy sterujące na stole montażowym używane są w czasie wykonywania.

W warstwie Układ znajduje się element zastępczy o nazwie video_mc dla składnika FLVPlayback. Wszystkie pozostałe elementy sterujące układane są względem video_mc. Jeśli użytkownik rozpocznie pracę z jednym z plików FLA programu Flash i zmieni rozmiar elementów sterujących, przesunięcie klipów zastępczych umożliwia zwykle naprawienie układu.

Każdy z klipów elementów zastępczych ma konkretną nazwę instancji. Nazwami elementów zastępczych są: playpause_mc, play_mc, pause_mc, stop_mc, captionToggle_mc, fullScreenToggle_mc, back_mc, bufferingBar_mc, bufferingBarFill_mc, seekBar_mc, seekBarHandle_mc, seekBarProgress_mc, volumeMute_mc, volumeBar_mc oraz volumeBarHandle_mc. Fragment, który jest ponownie kolorowany podczas wybierania koloru dla karnacji, nosi nazwę border_mc.

Nie jest ważne, który klip używany jest dla elementu sterującego. Zazwyczaj do przycisków używany jest klip stanu normalnego. Jedynie dla wygody dla pozostałych elementów sterujących używany jest klip danego elementu. Najważniejszą rzeczą są położenia x (poziome) i y (pionowe) oraz wysokość i szerokość elementu zastępczego.

Poza standardowymi elementami sterującymi użytkownik może zdefiniować dowolną ilość dodatkowych klipów. Jedynym wymaganiem dla klipów jest, aby w oknie dialogowym Powiązanie dla ich symboli biblioteki zaznaczona była opcja Eksportuj do ActionScript. Niestandardowe klipy warstwy Układ mogą mieć dowolną nazwę instancji, poza zarezerwowanymi nazwami instancji wymienionymi powyżej. Nazwa instancji wymagana jest tylko do ustawiania dla klipów kodu ActionScript w celu określenia układu.

Klip border_mc jest klipem specjalnym. Jeśli właściwość FlvPlayback.skinAutoHide zostanie ustawiona na wartość true, , karnacja zostanie wyświetlona, gdy mysz umieszczona zostanie nad klipem border_mc. Dla karnacji istotne jest wyświetlanie poza obwiednią odtwarzacza wideo. Informacje o właściwości skinAutoHide zawiera sekcja Modyfikowanie zachowania karnacji .

W plikach FLA programu Flash klip border_mc używany jest dla efektu chromowania i krawędzi wokół przycisków Do przodu i Wstecz.

Klip border_mc jest także częścią karnacji, której kanał alfa i kolor zmienione zostały przez właściwości skinBackgroundAlpha i skinBackgroundColor . Aby umożliwić dostosowywanie koloru oraz kanału alfa, do kodu ActionScript należy dołączyć następujący fragment:

border_mc.colorMe = true;

Kod ActionScript i układ karnacji

Poniższy kod ActionScript dotyczy wszystkich elementów sterujących. Niektóre elementy sterujące zawierają konkretny kod ActionScript, który określa dodatkowe zachowanie i który wyjaśniony jest w poświęconej jemu sekcji.

Wstęp do języka ActionScript jest dużą sekcją, w której określone zostały nazwy klas dla każdego stanu wszystkich składników. Wszystkie nazwy klas znajdują się w pliku SkinOverAll.fla. Dla przycisków Wstrzymaj i Odtwórz przykładowy kod wygląda następująco:

this.pauseButtonDisabledState = "fl.video.skin.PauseButtonDisabled"; 
this.pauseButtonDownState = "fl.video.skin.PauseButtonDown"; 
this.pauseButtonNormalState = "fl.video.skin.PauseButtonNormal"; 
this.pauseButtonOverState = "fl.video.skin.PauseButtonOver"; 
this.playButtonDisabledState = "fl.video.skin.PlayButtonDisabled"; 
this.playButtonDownState = "fl.video.skin.PlayButtonDown"; 
this.playButtonNormalState = "fl.video.skin.PlayButtonNormal"; 
this.playButtonOverState = "fl.video.skin.PlayButtonOver";

Nazwy klas nie mają rzeczywistych plików klas zewnętrznych; są one określone w oknie dialogowym Połączenie dla wszystkich klipów filmowych w bibliotece.

W składniku w języku ActionScript 2.0 były klipami filmowymi stołu montażowego używanymi w czasie wykonywania. W składniku w języku ActionScript 3.0 dla wygody edytowania klipy filmowe pozostają w pliku FLA. W chwili obecnej wszystkie klipy znajdują się na liniach pomocniczych i nie są eksportowane. Wszystkie zasoby karnacji w bibliotece ustawione są do eksportu w pierwszej klatce i tworzone są dynamicznie wraz z kodem, jak w poniższym przykładzie:

new fl.video.skin.PauseButtonDisabled();

Ta sekcja zawiera kod ActionScript, w którym definiowana jest minimalna szerokość i wysokość karnacji. Wartości te wyświetlane są w oknie dialogowym Wybierz karnację i używane są w czasie wykonywania w celu zapobiegania skalowaniu karnacji poniżej jej minimalnego rozmiaru. Jeśli minimalny rozmiar nie ma być określany, należy pozostawić go jako niezdefiniowany lub określić jako mniejszy bądź równy zero.

// minimum width and height of video recommended to use this skin, 
// leave as undefined or <= 0 if there is no minimum 
this.minWidth = 270; 
this.minHeight = 60;

Każdy element zastępczy może mieć następujące, zastosowane do siebie właściwości:

Właściwość

Opis

anchorLeft

Boolean. Ustawia położenie elementu sterowania względem lewej strony instancji FLVPlayback. Wartością domyślną jest true chyba, że właściwość anchorRight została jawnie ustawiona na wartość true , wówczas wartością domyślną jest false .

anchorRight

Boolean. Ustawia położenie elementu sterowania względem prawej strony instancji FLVPlayback. Wartością domyślną jest false .

anchorBottom

Boolean. Ustawia położenie elementu sterowania względem dolnej części instancji FLVPlayback. Wartością domyślną jest true chyba, że właściwość anchorTop została jawnie ustawiona na wartość true , wówczas wartością domyślną jest false .

anchorTop

Boolean. Ustawia położenie elementu sterowania względem górnej części instancji FLVPlayback. Wartością domyślną jest false .

Jeśli obie właściwości anchorLeft i anchorRight mają wartość true , w czasie wykonywania element sterujący skalowany jest poziomo. Jeśli obie właściwości anchorTop i anchorBottom mają wartość true , w czasie wykonywania element sterujący skalowany jest pionowo.

Aby zobaczyć efekt działania właściwości, należy zobaczyć, w jaki sposób właściwości używane są w karnacjach Flash. Elementy sterujące BufferingBar i SeekBar są jedynymi elementami skalowanymi; układane są jeden na drugim i mają właściwości anchorLeft i anchorRight ustawione na wartość true . Wszystkie elementy sterujące na lewo od BufferingBar i SeekBar mają właściwość anchorLeft ustawioną na wartość true , a wszystkie elementy sterujące po prawej stronie mają anchorRight ustawioną na wartość true . Wszystkie elementy sterujące mają właściwość anchorBottom ustawioną na wartość true .

Aby utworzyć karnację powyżej, a nie poniżej, miejsca, w którym umieszczone są elementy sterujące, można dokonać edycji na warstwie Układ. Należy jedynie przesunąć elementy sterujące do góry względem klipu video_mc , i ustawić właściwość anchorTop na wartość true dla wszystkich elementów sterujących.

Pasek buforowania

Pasek buforowania zawiera dwa klipy filmowe: bufferingBar_mc i bufferingBarFill_mc. Położenie każdego klipu na stole montażowym względem innego jest istotne ze względu na pozycjonowanie względne. Pasek buforowania używa dwóch oddzielnych klipów, ponieważ składnik skaluje klip bufferingBar_mc, ale nie skaluje bufferingBarFill_mc.

W klipie bufferingBar_mc stosowane jest skalowanie 9-plastrowe, dlatego obwiednia nie zostanie podczas skalowania zniekształcona. Klip bufferingBarFill_mc jest bardzo szeroki, dlatego zawsze będzie dostatecznie szeroki bez potrzeby skalowania. Jest automatycznie maskowany w czasie wykonania w celu wyświetlenia tylko fragmentu powyżej rozciągniętego klipu bufferingBar_mc. Domyślnie dokładne wymiary maski zachowają równe marginesy po lewej i prawej stronie w klipie bufferingBar_mc, w oparciu o różnicę między położeniami x (poziomymi) klipu bufferingBar_mc i bufferingBarFill_mc. Pozycjonowanie można dostosować za pomocą kodu ActionScript.

Jeśli pasek buforowania nie potrzebuje skalowania lub nie używa skalowania 9-plastrowego, można go ustawić tak, jak składnik BufferingBar niestandardowego UI FLV Playback. Więcej informacji zawiera Składnik BufferingBar .

Pasek buforowania zawiera następującą dodatkową właściwość:

Właściwość

Opis

fill_mc:MovieClip

Określa nazwę instancji wypełnienia paska buforowania. Wartością domyślną jest bufferingBarFill_mc.

Pasek wyszukiwania i pasek głośności

Pasek wyszukiwania również zawiera dwa klipy filmowe : seekBar_mc i seekBarProgess_mc. Położenie każdego klipu w warstwie Układ względem innego jest istotne ze względu na pozycjonowanie względne. Mimo że oba klipy są skalowane, klip seekBarProgress_mc nie może być zagnieżdżony w klipie seekBar_mc, ponieważ seekBar_mc używa skalowania 9-plastrowego, które nie działa poprawnie z zagnieżdżonymi klipami filmowymi.

W klipie seekBar_mc stosowane jest skalowanie 9-plastrowe, dlatego obwiednia nie zostanie podczas skalowania zniekształcona. Klip seekBarProgress_mc jest również skalowany, ale jest on zniekształcany. Nie jest w nim używane skalowanie 9-plastrowe, ponieważ jest to wypełnienie, które wygląda dobrze podczas zniekształcania.

Klip seekBarProgress_mc działa bez klipu fill_mc, w podobny sposób, w jaki klip progress_mc działa w niestandardowych składnikach UI FLV Playback. Innymi słowy nie jest maskowany i skalowany w poziomie. Dokładne wymiary klipu seekBarProgress_mc w 100% zdefiniowane zostały przez lewe i prawe marginesy w klipie seekBarProgress_mc. Domyślnie wymiary te są równe i oparte na różnicy między położeniami x (poziomymi) klipów seekBar_mc i seekBarProgress_mc. Wymiary można dostosować w kodzie ActionScript klipu filmowego paska wyszukiwania tak, jak zostało to przedstawione w poniższym przykładzie:

this.seekBar_mc.progressLeftMargin = 2; 
this.seekBar_mc.progressRightMargin = 2; 
this.seekBar_mc.progressY = 11; 
this.seekBar_mc.fullnessLeftMargin = 2; 
this.seekBar_mc.fullnessRightMargin = 2; 
this.seekBar_mc.fullnessY = 11;

Kod ten można wstawić na osi czasu klipu filmowego składnika lub razem z innym kodem ActionScript na głównej osi czasu. Jeśli dostosowywanie przeprowadzane będzie za pomocą kodu, zamiast modyfikacji układu, wypełnienie nie musi znajdować się na stole montażowym. Wypełnienie musi znajdować się w bibliotece ustawione do eksportu do ActionScript w klatce nr 1 z poprawną nazwą klasy.

Tak jak w składniku SeekBar niestandardowego UI FLV Playback dla paska wyszukiwania możliwe jest utworzenie klipu filmowego stopnia ukończenia. Jeśli pasek wyszukiwania nie potrzebuje skalowania lub jest skalowany, ale nie używa skalowania 9-plastrowego, klip progress_mc lub fullness_mc można ustawić za pomocą dowolnej metody użytej dla niestandardowych składników UI FLV Playback. Więcej informacji zawiera sekcja Klipy filmowe postępu i stopnia ukończenia .

Ponieważ pasek głośności w karnacjach Flash nie jest skalowany, zbudowany jest on w ten sam sposób, co składnik VolumeBar niestandardowego UI FLV Playback. Więcej informacji zawiera sekcja Składniki SeekBar i VolumeBar . Wyjątkiem jest inna implementacja uchwytu.

Uchwyty Seekbar i VolumeBar

Uchwyty SeekBar i VolumeBar umieszczane są na warstwie Układ obok paska. Domyślnie lewy i prawy margines oraz wartości na osi y uchwytu ustawiane są na podstawie ich położenia względem klipu filmowego paska. Lewy margines ustawiony jest jako różnica między położeniem x (poziomym) uchwytu, a położeniem x (poziomym) paska, natomiast prawy margines jest równy lewemu. Wartości te można dostosować z użyciem kodu ActionScript w klipie SeekBar lub VolumeBar. Poniższy przykład jest tym samym kodem ActionScript, którego użyto z niestandardowymi składnikami UI FLV Playback:

this.seekBar_mc.handleLeftMargin = 2; 
this.seekBar_mc.handleRightMargin = 2; 
this.seekBar_mc.handleY = 11;

Kod ten można wstawić na osi czasu klipu filmowego składnika lub razem z innym kodem ActionScript na głównej osi czasu. Jeśli dostosowywanie przeprowadzane będzie za pomocą kodu, zamiast modyfikacji układu, uchwyt nie musi znajdować się na stole montażowym. Wypełnienie musi znajdować się w bibliotece ustawione do eksportu do ActionScript w klatce nr 1 z poprawną nazwą klasy.

Poza tymi właściwościami uchwyty są prostymi klipami filmowymi ustawionymi w ten sam sposób, co w niestandardowych składnikach UI FLV Playback. Oba mają prostokątne tła z właściwością alpha ustawioną na 0. Są one wyświetlane jedynie w celu powiększenia obszaru klikania i nie są wymagane.

Klipy tła i pierwszego planu

Klipy filmowe chrome_mc i forwardBackBorder_mc są implementowane jako klipy tła.

Spośród klipów filmowych ForwardBackBorder, ForwardBorder i BackBorder na stole montażowym oraz zastępczych przycisków Do przodu i Wstecz jedynym, który nie znajduje się na linii pomocniczej, jest ForwardBackBorder. Sytuacja taka ma miejsce tylko w karnacjach, które w danej chwili używają przycisków Do przodu i Wstecz.

Jedynym wymaganiem dla klipów jest, aby były eksportowane do kodu ActionScript w klatce nr 1 w bibliotece.