r10-04(1), Informacje dot. kompa


0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

Części składowe języka HTML


0x08 graphic
Na pewno wiesz, że Flash umożliwia tworzenie przyciągających wzrok elementów tekstowych, w rodzaju tytułów, etykiet i opisów, towarzyszących twojej animacji i dźwiękowi. Czy jednak spodziewałeś się, że oprócz określenia stylu, koloru i rozmiaru tekstu możesz zrobić z nim coś więcej? Tekst we Flashu jest naprawdę żywy, co oznacza, że użytkownik może wprowadzać go, a nawet zaznaczać i edytować w czasie odtwarzania filmu. No i może być też dynamiczny, czyli odświeżany podczas odtwarzania. Każdy kolejny fragment tekstu wprowadzany przez odbiorcę nazywa się tekstem pobieranym, a tekst, który możesz uaktualniać w czasie odtwarzania - tekstem dynamicznym. Zarówno pobierany, jak i dynamiczny tekst stwarzają możliwość otrzymywania ze strony użytkownika złożonych informacji i dostosowywania filmu Flasha do tych danych. Można np. użyć tekstu pobieranego do umożliwienia użytkownikom wpisania ich imion, a potem spersonalizowania komunikatów pojawiających się podczas odtwarzania filmu. Ciekawym pomysłem jest też przygotowanie internetowego samouczka, korzystającego z funkcji pobierania tekstu do wprowadzania krótkich odpowiedzi oraz tekstu dynamicznego do wyzwolenia odpowiedniej reakcji programu.

Za pomocą palety Text Options definiuje się pola tekstu pobieranego, do których użytkownik wprowadza tekst, oraz pola dynamicznego tekstu, wyświetlającego tekst zmieniający się w zależności od podanych kryteriów. Tekstom pobieranym przypisuje się zmienne, dzięki czemu można przechowywać i modyfikować informacje wprowadzane przez odbiorcę, a także sprawdzać je za pomocą wyrażeń warunkowych. Takie fragmenty tekstu mogą być później wykorzystywane w skryptach. Dwa obiekty kontrolujące informacje zawarte w pobieranym i dynamicznym tekście - obiekt selekcji (Selection) i obiekt łańcucha znakowego (String) - pozwalają analizować i manipulować tekstem lub położeniem kursora w obrębie pola tekstowego. Dzięki temu można np. wyłapywać błędy w pisowni lub we wprowadzanych informacjach, zanim zostaną wykorzystane w filmie Flasha lub przeniesione do zewnętrznej aplikacji w celu przetworzenia. Niniejszy rozdział przedstawia niektóre z wielu możliwości, jakie niesie ze sobą zastosowanie tekstu pobieranego i dynamicznego, a także wprowadza cię w zagadnienia związane z używaniem narzędzi kontrolujących przepływ informacji pomiędzy filmem Flasha i jego odbiorcami.

0x08 graphic
0x08 graphic
0x08 graphic
Tekst pobierany

Projekty, które tworzysz we Flashu, mogą być tak zaprojektowane, by móc pobierać informacje bezpośrednio od odbiorcy - np. nazwę identyfikującą użytkownika i hasło, dane osobowe potrzebne do przeglądu, odpowiedzi na pytania konkursowe, zamówienia czy odpowiedzi w internetowych pogawędkach. Dane takie, nazywane we Flashu tekstem pobieranym (input text), przypisuje się do zmiennych, dzięki czemu mogą być przesyłane do przetworzenia w innych częściach filmu lub wysyłane do aplikacji serwerowej za pomocą metod GET i POST.

Poniższe ćwiczenie demonstruje sposób umożliwienia odbiorcy kontrolowania parametrów akcji za pośrednictwem tekstu pobieranego. W tym przypadku informacje będą pobierane od użytkownika za pomocą bloku tekstowego, a następnie wykorzystywane do wczytania witryny sieciowej o podanym adresie URL.

W celu użycia tekstu pobieranego
do żądania wczytania
witryny sieciowej:

  1. Wybierz narzędzie tekstowe (Text Tool) i narysuj na scenie pole tekstowe (rys. 10.1).

  2. Na palecie Text Options wybierz Input Text z rozwijanego menu (rys. 10.2).

Aktualnie zaznaczone pole tekstowe przyjmie postać pola tekstu pobieranego, umożliwiającego wprowadzanie tekstu w czasie odtwarzania filmu.

  1. W polu Variable palety Text Options wpisz nazwę zmiennej. Dowolny tekst wprowadzony podczas odtwarzania filmu zostanie przypisany i przechowany w tej zmiennej.

  2. Zaznacz pole Border/Bg. Twoje pole tekstowe będzie teraz miało czarną ramkę i białe tło (rys. 10.3).

0x01 graphic

Rys. 10.1. Pole tekstowe tworzy się za pomocą narzędzia tekstowego. Możesz zmieniać rozmiar pola, przeciągając uchwyt w jego prawym dolnym rogu

0x01 graphic

Rys. 10.2. Takie ustawienia na palecie Text Options definiują pole tekstowe jako pole tekstu pobieranego (Input Text)

0x01 graphic

Rys. 10.3. Pole tekstowe z nieokreśloną ramką i tłem (z lewej) jest widoczne na scenie w trybie edycji w postaci pola otoczonego kropkowaną linią. Pole tekstowe, któremu przypisano ramkę i wypełnienie (tło) (z prawej), posiada czarną, ciągłą ramkę i białe tło

0x08 graphic
0x01 graphic

Rys. 10.4. Akcje przypisane do przycisku wczytują do nowego okna przeglądarki witrynę sieciową o adresie przechowywanym w zmiennej myURL

0x01 graphic

Rys. 10.5. Zmienna w polu tekstu pobieranego jest używana jako adres URL dla akcji getURL. Zwróć uwagę, że w polu tekstowym musi być podany protokół http://

  1. Utwórz symbol przycisku i umieść jego klon na scenie, poniżej pola tekstowego. Zaznacz przycisk i otwórz paletę akcji.

  2. Wybierz Actions/on. W bloku edycji parametrów zaznacz zdarzenie Release.

  3. Wybierz Actions/getURL. W polu URL bloku edycji parametrów wpisz nazwę zmiennej pola tekstu pobieranego. Zaznacz pole wyboru Expression obok pola URL. W polu Window wybierz _blank (rys. 10.4).

  4. Przetestuj film.

Kiedy odbiorca filmu wpisze adres URL w polu tekstowym, adres ten zostanie zapamiętany pod postacią zmiennej. Następnie, po kliknięciu przycisku, Flash otworzy nowe okno w przeglądarce i wczyta podaną stronę internetową (rys. 10.5).

Wskazówki

  • Opcje, które wybierzesz na paletach Character oraz Paragraph, np. font (czcionka), color (barwa) i alignment (wyrównanie), zostaną przypisane do tekstu wpisywanego przez odbiorcę filmu.

  • Istnieje możliwość umieszczania w polach tekstu pobieranego instrukcji na temat tego, co ma być wpisane. Umieść np. zdanie Tutaj wpisz adres witryny internetowej w bloku tekstowym w taki sposób, żeby odbiorca mógł zastąpić je wybranym adresem URL. Możesz też wprowadzić początkową część adresu, np. http://, a użytkownik dopisze sobie resztę.

0x08 graphic
Opcje tekstu pobieranego

Dla tekstu pobieranego - na palecie Text Options dostępnych jest wiele różnych opcji (rys. 10.6). Chociaż najważniejszym polem do wypełnienia jest Variable, to za pomocą innych opcji możesz modyfikować sposób, w jaki odbiorca będzie wprowadzał tekst.

  • Single Line wymusza wyświetlanie wprowadzonego tekstu w jednej linii bloku tekstowego. Jeśli długość tekstu wykracza poza szerokość bloku, to będzie on przewijany horyzontalnie.

  • Multiline umożliwia wyświetlanie tekstu w więcej niż jednej linii bloku tekstowego, jeśli użytkownik wciśnie klawisz Enter w celu przejścia do następnej linii.

  • Password ukrywa wpisywane znaki pod postacią gwiazdek. Użyj tej opcji do ukrywania ważnych informacji, np. hasła, przed wzrokiem ludzi zaglądających odbiorcy filmu przez ramię.

  • HTML zezwala na formatowanie tekstu w standardzie HTML 1.0 w celu poprawnego wyświetlania.

  • Border/Bg rysuje czarną ramkę wokół bloku tekstowego i wypełnia go białym tłem. Nie zaznaczaj tej opcji, jeśli blok tekstowy ma być niewidoczny. Postaraj się mimo wszystko oznaczać w jakiś sposób bloki tekstowe na scenie, aby były widoczne dla odbiorcy filmu.

  • Word wrap, opcja pojawiająca się tylko po wybraniu innej opcji, Multiline. Automatycznie przenosi tekst do następnej linii jeśli jego długość przekracza szerokość bloku.

  • Max. Chars określa maksymalną ilość znaków możliwych do wprowadzenia w bloku tekstowym. Jeśli np. odbiorca ma wpisać nazwę stanu za pomocą dwuliterowego skrótu, wpisz w tym polu cyfrę 2.

  • Embed fonts dołącza fonty do eksportowanego pliku SWF, dzięki czemu w bloku tekstowym będą wyświetlane wygładzone fonty wybrane przez ciebie, a nie te, którymi akurat dysponuje odbiorca. Jednak pamiętaj, że zwiększa to objętość pliku wynikowego.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 10.6. Opcje dostępne na palecie Text Options pozwalają zdefiniować właściwości bloku tekstowego

Więcej o osadzaniu czcionek i czcionkach systemowych

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Osadzenie czcionek w pliku z filmem Flasha daje pewność, że odbiorca będzie oglądał w czasie jego odtwarzania dokładnie takie fonty, jakich ty użyłeś przy projektowaniu filmu. Domyślnie opcję osadzania czcionek uruchamia się dla statycznego tekstu, ale w przypadku tekstu dynamicznego i pobieranego - musisz zdecydować. Jeśli nie dołączysz czcionek do dokumentu, Flash użyje ich najbliższych ekwiwalentów dostępnych w systemie odbiorcy, wyświetlając je bez wygładzania (rys. 10.7).

Dlaczego by więc nie wybierać opcji osadzania czcionek za każdym razem? Przede wszystkim dlatego, że drastycznie zwiększa ona wielkość eksportowanego pliku SWF z powodu dołączania informacji potrzebnych do wyświetlenia określonego fontu.

0x01 graphic

Rys. 10.7. Tekst pobierany, korzystający z określonej czcionki w fazie powstawania projektu (u góry), jest wyświetlany podczas odtwarzania inaczej, niż na komputerze odbiorcy, który nie posiada w systemie odpowiednika czcionki użytej przez projektanta, a niedołączonej do pliku (u dołu)

Jednak ostateczny rozmiar pliku można zmniejszyć, dołączając tylko te fonty, którymi użytkownik będzie się posługiwał przy wpisywaniu tekstu. Jeśli np. wymagasz wprowadzania tylko wartości numerycznych, dołącz jedynie wzory dla czcionek przedstawiających cyfry. Wtedy wszystkie cyfry będą dostępne w trakcie odtwarzania filmu, natomiast pozostałe znaki w ogóle nie wyświetlą się na ekranie (będą niedostępne).

Innym sposobem na zachowanie minimalnych rozmiarów pliku, a jednocześnie wyeliminowanie problemu spowodowanego brakiem właściwych fontów po stronie odbiorcy, jest wykorzystanie czcionek systemowych. Czcionki te pojawiają się na końcu listy dostępnej w menu rozwijanym Font, a są to _sans, _serif i _typewriter. Opcja ta wyszukuje fonty w systemie odbiorcy, najbardziej zbliżone do określonego fontu systemowego. Oto lista odpowiedników fontów systemowych:

  • Arial dla fontów typu _sans

  • Times New Roman dla fontów typu _serif

  • Courier New dla fontów typu _typewriter

Kiedy używasz fontów systemowych, możesz być pewien, że odbiorca widzi na ekranie tekst bardzo zbliżony do tekstu, z którego korzystałeś, tworząc projekt. Jednak fonty systemowe mają też dwie wady: są wyświetlane bez wygładzania i nie mogą być animowane lub maskowane.

0x08 graphic
Tekst dynamiczny

W przypadku tekstu, który ma zmieniać swoje właściwości, jak np. punktacja w grze zręcznościowej, wynik obliczeń czy też procent ilości ujęć twojego filmu Flasha, ściągniętych z sieci, najlepiej spisuje się tekst dynamiczny. Podczas gdy bloki tekstu pobieranego akceptują informacje dostarczane przez odbiorcę, bloki tekstu dynamicznego przekazują dane użytkownikowi. Tak jak w przypadku tekstu pobieranego, również i tutaj mamy do czynienia ze zmienną, a jej zawartość jest właśnie tym, co widać będzie w bloku tekstowym. W dodatku, opcje dynamicznego tekstu są zgodne z tymi, które pojawiają się podczas edycji tekstu pobieranego, choć z jednym wyjątkiem: polem wyboru Selectable. Zaznaczenie tej opcji pozwoli użytkownikowi zaznaczać i kopiować tekst wyświetlany w bloku, ale uniemożliwi dokonywanie przez niego zmian.

W kolejnym ćwiczeniu przygotujemy zarówno bloki tekstu pobieranego, jak i dynamicznego. Po wprowadzeniu przez użytkownika temperatury w stopniach Celsjusza w bloku tekstu pobieranego, Flash przekształci podaną wartość do skali Fahrenheita i wyświetli wynik w bloku tekstu dynamicznego.

W celu użycia tekstu dynamicznego
do wyprowadzania
informacji na ekran:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu narysowania bloku tekstowego.

  1. Na palecie Text Options, wybierz Input Text z pierwszego menu rozwijanego. W polu Variable wpisz nazwę zmiennej tekstu pobieranego (rys. 10.8).

Aktualnie zaznaczony blok tekstowy przyjmie postać bloku tekstu pobieranego, umożliwiając wprowadzanie informacji w czasie odtwarzania filmu.

  1. Ponownie wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu narysowania kolejnego bloku tekstowego.

0x01 graphic

Rys. 10.8. Blok tekstu pobieranego nazwij celsius

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 10.9. Blok tekstu dynamicznego nazwij fahrenheit

0x01 graphic

Rys. 10.10. To wyrażenie oblicza wartość zmiennej Fahrenheit na podstawie wyrażenia wprowadzonego w polu Value

0x01 graphic

Rys. 10.11. Zawartość bloku tekstu dynamicznego (Fahrenheit) jest uaktualniana po wprowadzeniu nowej informacji do bloku tekstu pobieranego (Celsius)

  • Wykorzystaj bloki dynamicznego tekstu, wyświetlające zawartość zmiennych jako narzędzie do wykrywania i usuwania błędów w programie. Jeśli projektujesz rozbudowany film Flasha, korzystający z dużej ilości zmiennych, możesz utworzyć blok tekstu dynamicznego, wyświetlającego aktualne wartości zmiennych, a tym samym będziesz wiedział, w jaki sposób Flash przetwarza informacje. W rozdziale 12. zapoznasz się z innymi jeszcze metodami śledzenia zmiennych, ale już ta opisana powyżej pozwala dołączyć do filmu narzędzie podglądu wartości zmiennych.

  1. Na palecie Text Options, wybierz tym razem Dynamic Text z pierwszego menu rozwijanego.

Aktualnie zaznaczony blok tekstowy przyjmie postać bloku tekstu dynamicznego, umożliwiając wyświetlanie i uaktualnianie informacji za pośrednictwem tego pola.

  1. W polu Variable palety Text Options wpisz nazwę zmiennej tekstu dynamicznego (rys. 10.9).

  2. Zaznacz obydwa bloki tekstowe i wybierz Insert/Convert to Symbol. Wpisz nazwę symbolu i wybierz opcję Movie Clip w typie Behavior. Kliknij OK.

Flash umieści obydwa bloki tekstowe w obrębie klipu filmowego, którego klon pozostanie na scenie.

  1. Zaznacz nowo utworzony klon klipu filmowego, zawierający przygotowane wcześniej bloki tekstowe i otwórz paletę akcji.

  2. Wybierz Actions/onClipEvent. W bloku edycji parametrów zaznacz zdarzenie EnterFrame.

  3. Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej tekstu dynamicznego. W polu Value wprowadź formułę wykorzystującą zmienną tekstu pobieranego. Zaznacz pole wyboru Expression obok pola Value (rys. 10.10).

  4. Przetestuj film. Flash wyświetla wartość zmiennej tekstu dynamicznego na podstawie informacji wprowadzonej przez użytkownika w bloku tekstu pobieranego (rys. 10.11). Obliczanie odbywa się w czasie rzeczywistym, a wyświetlana informacja jest uaktualniana po każdej zmianie zawartości bloku tekstu pobieranego.

Wskazówki

  • W powyższym ćwiczeniu zmienna tekstu jest dynamicznego uaktualniana nieustannie, ponieważ zawiera się w detektorze onClipEvent (enterFrame).

0x08 graphic
Wiązanie tekstu

Wykorzystanie dynamicznego tekstu do wiązania lub łączenia pobieranego tekstu z innymi zmiennymi i łańcuchami znakowymi pozwala na bardziej elastyczną pracę z wyrażeniami, a także tworzenie spersonalizowanej interakcji Flasha z odbiorcą. Użytkownik może np. zostać najpierw poproszony o wpisanie swojego imienia do bloku tekstu pobieranego o nazwie twojeImię. W polu tekstu dynamicznego możesz ustawić jego zmienną tak:

"Cześć, "+twojeImię+", witamy w programie Flash!"

w efekcie czego odbiorca zobaczy swoje imię podstawione do komunikatu powitalnego.

W jednym z wcześniejszych ćwiczeń tworzyłeś film Flasha wczytujący witrynę sieciową o adresie wprowadzonym do bloku tekstu pobieranego. Wiążąc zmienną myURL w wyrażeniu:

"http://"+myURL

eliminujesz potrzebę wpisywania przez użytkownika schematu protokołu internetowego przed właściwym adresem witryny.

Posługuj się tą strategią, wraz z innymi akcjami Flasha, w tworzeniu elastycznych i edytowalnych funkcji oraz interfejsów. W poniższym przykładzie powiążesz bloki tekstu pobieranego od klienta do automatycznego skompilowania informacji we właściwym porządku, a następnie użyjesz akcji print do wydrukowania kompletnego rachunku lub zamówienia.

W celu
powiązania bloków tekstowych
na potrzeby wydruku:

  1. Wybierz narzędzie tekstowe (Text Tool) i utwórz kilka bloków tekstu pobieranego. Za pomocą palety Text Options przypisz każdemu z nich zmienną o unikalnej nazwie (rys. 10.12).

  1. Utwórz symbol klipu filmowego i przejdź do trybu edycji tego symbolu.

  2. Przypisz akcję stop do pierwszego ujęcia kluczowego klipu filmowego. Pozostaw to ujęcie kluczowe pustym. Akcja stop zapobiega odtwarzaniu tego klipu filmowego w nieskończoność.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 10.12. Zdefiniuj sześć bloków tekstu pobieranego z unikalnymi nazwami zmiennych

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 10.13. Blok dynamicznego tekstu jest umieszczony w ujęciu kluczowym 2., wraz z grafiką gotową do wydruku

0x01 graphic

Rys. 10.14. Kryjący prostokąt wyznacza obszar drukujący się dla wszystkich ujęć kluczowych oznaczonych etykietą #p

  1. Nadaj następnemu ujęciu kluczowemu etykietę #p i utwórz w nim duży blok tekstu dynamicznego. Na palecie Text Options, wybierz Multiline z menu rozwijanego, następnie wpisz nazwę zmiennej i zaznacz opcje Word wrap oraz Embed fonts, żeby dołączyć do pliku potrzebne czcionki. Dodaj też grafikę, która będzie pojawiać się na wydruku (rys. 10.13).

Blok tekstu dynamicznego będzie wyświetlał powiązane informacje, a etykieta #p pozwoli na wydrukowanie oznaczonego nią ujęcia kluczowego.

  1. Nadaj innemu ujęciu kluczowemu etykietę #b i narysuj duży, kryjący prostokąt, który będzie pokrywał obszar zajmowany przez blok dynamicznego tekstu, umieszczony w poprzednim ujęciu kluczowym (rys. 10.14).

Etykieta #b wskazuje, że to ujęcie kluczowe stanowi obszar drukowany.

  1. Wróć do głównej listwy czasowej i przeciągnij na scenę klon klipu filmowego z trzema utworzonymi właśnie ujęciami kluczowymi. Nazwij klon orderform za pośrednictwem pola Name palety Instance.

  2. Utwórz symbol przycisku i umieść jego klon na scenie.

  3. Zaznacz klon przycisku i na palecie akcji wybierz Actions/set variable.

  4. W polu Variable wprowadź ścieżkę dostępu do zmiennej tekstu dynamicznego. W polu Value wpisz kombinację znaków i zmiennych tekstu pobieranego w celu powiązania informacji wprowadzanej przez użytkownika w zwartą, drukowalną postać.

0x08 graphic
Użyj sekwencji opuszczania znaku, np. \r, do wprowadzenia przejść do kolejnej linii. Zaznacz pole wyboru Expression obok pola Value (rys. 10.15)

  1. Na palecie akcji wybierz Actions/print. W menu rozwijanym Print wybierz As vectors, a następnie zaznacz Target w polu Location oraz wpisz nazwę klonu klipu filmowego orderform. Zaznacz pole wyboru Expression obok pola Location. W polu Bounding box wybierz opcję Movie (rys. 10.16).

  2. Przetestuj film. Kiedy odbiorca filmu wprowadzi dane do bloków tekstu pobieranego i kliknie przycisk, blok dynamicznego tekstu powiąże zmienne tekstu pobieranego i wyświetli odpowiednią informację w ujęciu kluczowym z etykietą #p. Potem akcja print spowoduje wydrukowanie zawartości tego ujęcia (rys. 10.17).

Wskazówki

  • Upewnij się, że w polu Name na palecie Instance wpisałeś nazwę dla klipu filmowego zawierającego ujęcie przeznaczone do wydruku. Nawet jeśli nie potrzebujesz podawać ścieżki dostępu do klipu z poziomu utworzonego przycisku, to nazwa ta musi zostać wprowadzona, jeśli Flash ma wydrukować zawartość klipu filmowego.

  • Możesz ukryć klip filmowy znajdujący się na scenie - a jednocześnie nie utracić możliwości jego wydrukowania - ustawiając właściwość _visible na wartość fałsz (false). Zmiana tej właściwości nie wpływa na sposób wydruku zawartości klipu filmowego.

  • W przypadku drukowania zawartości bloków dynamicznego tekstu ważne jest dołączanie do pliku wykorzystanych fontów. Osiąga się dzięki temu znacznie lepszą jakość wydruku.

0x01 graphic

Rys. 10.15. Ścieżka dostępu do bloku tekstu dynamicznego o nazwie printOutput zawiera odwołanie do klipu filmowego orderform (formularz zamówienia). Blok tekstu dynamicznego wyświetla łańcuch znakowy wiążący zmienne tekstu pobieranego i podaje końcowy koszt zamówionych produktów (widgets), mnożąc zmienną przez 5

0x01 graphic

Rys. 10.16. Wyrażenie print przesyła dane zawarte w ujęciu z etykietą #p do drukarki

0x01 graphic

Rys. 10.17. Film Flasha (u góry) udostępnia bloki tekstu pobieranego, których zawartość jest kompilowana w bloku dynamicznego tekstu, a następnie drukowana (u dołu)

0x08 graphic

Wyświetlanie tekstu HTML

Flash umożliwia wyświetlanie w blokach tekstu dynamicznego dokumentów w formacie HTML 1.0. Jeśli wstawisz tekst do zmiennej bloku tekstu dynamicznego, wcześniej zaznaczając wprowadzany dokument jako HTML, Flash zinterpretuje odpowiednio znaczniki i zachowa styl formatowania. Oznacza to tyle, że możesz integrować dokumenty HTML z filmem Flasha, zachowując wszystkie ich style i funkcjonalność punktów węzłowych HREF (czyli hiperłączy).

Znaczniki HTML
zgodne z blokami tekstowymi Flasha

  • <A HREF> Znacznik wykorzystywany do tworzenia hiperłączy

  • <B> Styl pogrubiony pisma

  • <FONT COLOR> Kolor czcionki

  • <FONT FACE> Rodzaj czcionki

  • <FONT SIZE> Rozmiar czcionki

  • <I> Styl pochyły pisma

  • <P> Akapit

  • <U> Styl podkreślony pisma

Duże możliwości stwarza kombinacja tekstu HTML wczytanego do bloków tekstu dynamicznego za pomocą akcji loadVariablesNum. W celu uaktualnienia informacji wyświetlanych w czasie odtwarzania filmu wystarczy wówczas zmienić jedynie dokument HTML rezydujący poza plikiem Flasha. To bardzo wygodne, gdyż w takiej sytuacji nie trzeba otwierać pliku Flasha w celu dokonania okresowych zmian. Wszystkie niezbędne uaktualnienia może wykonać aplikacja serwerowa lub użytkownik nieznający Flasha.

0x08 graphic
W celu wczytania i wyświetlenia dokumentu HTML
w bloku dynamicznego tekstu:

  1. Uruchom dowolny edytor tekstu lub edytor HTML i utwórz swój dokument HTML. Na samym początku tekstu HTML wprowadź nazwę zmiennej i operator przypisania (znak równości, =). Zapisz gotowy plik tekstowy (rys. 10.18).

  1. We Flashu - zaznacz pierwsze ujęcie kluczowe na głównej listwie czasowej i otwórz paletę akcji.

  2. Wybierz Actions/loadVariables. W polu URL wpisz nazwę utworzonego wcześniej dokumentu HTML. Pozostaw bieżące ustawienie opcji Location (Level, liczba 0) (rys. 10.19).

Flash wczyta plik tekstowy zawierający zmienną.

  1. Wybierz narzędzie tekstowe (Text Tool) i narysuj blok tekstowy o wielkości zbliżonej do rozmiarów sceny.

  2. Na palecie Text Options wybierz opcje Dynamic Text, Multiline i zaznacz pola HTML oraz Word wrap. Nadaj blokowi tekstowemu nazwę zmiennej (rys. 10.20).

  3. Utwórz symbol przycisku i umieść jego klon na scenie. Zaznacz przycisk i otwórz paletę akcji.

  4. Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej tekstu dynamicznego. W polu Value wpisz nazwę zmiennej wprowadzonej w pliku tekstowym (rys. 10.21).

0x01 graphic

Rys. 10.18. Tekst HTML został przypisany do zmiennej o nazwie HTMLpage i zapisany w oddzielnym dokumencie

0x01 graphic

Rys. 10.19. Ta akcja kontrolująca ujęcia wczytuje plik variables.txt, zawierający zmienną przechowującą tekst HTML

0x01 graphic

Rys. 10.20. Nazwij blok tekstu dynamicznego displayMyPage

0x01 graphic

Rys. 10.21. Zmienna tekstu dynamicznego o nazwie displayMyPage wyświetla zawartość zmiennej HTMLpage

0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 10.22. Blok tekstu dynamicznego wyświetla teks w formacie HTML

  1. Wyeksportuj plik SWF do tej samej lokalizacji, w której znajduje się przygotowany na początku plik tekstowy. Odtwórz plik SWF za pomocą przeglądarki lub odtwarzacza Flasha.

Kiedy użytkownik kliknie przycisk, Flash podstawi zmienną tekstu dynamicznego do zewnętrznej zmiennej w pliku tekstowym, przechowującej tekst w formacie HTML. W bloku dynamicznego tekstu wyświetlane będą informacje z zachowaniem stylu i formatu ustalonych za pomocą znaczników (rys. 10.22).

Wskazówki

  • Jako że tylko niektóre spośród znaczników HTML są czytelne dla bloków dynamicznego tekstu, powinieneś dokładnie sprawdzać swoje dokumenty pod kątem poprawności wyświetlania. Jeśli Flash nie rozpozna znacznika, to zostanie on zignorowany.

  • Znacznik <A> w środowiskach przeglądarek pojawia się normalnie jako podkreślony i w innym kolorze, natomiast we Flashu hiperłącze jest sygnalizowane jedynie przez wskaźnik myszy przyjmujący postać „rączki”. Można jednak ręcznie ustawić kolor i styl podkreślony dla hiperłączy, dodając znaczniki <U> (styl podkreślony) oraz <FONT COLOR="#0000FF> (kolor).

  • Znaczniki HTML są nadrzędne wobec ustawień nadanych fragmentom tekstu dynamicznego na paletach Character lub Paragraph. Jeśli np. wybierzesz czerwony kolor dla twojego tekstu dynamicznego, to kiedy wprowadzisz do tego pola tekst HTML, kolor czcionki i tak zostanie zmieniony zgodnie z ustawieniem znacznika <FONT COLOR>.

0x08 graphic
Animowanie
dynamicznego tekstu

Jeśli przekształcisz bloki tekstu dynamicznego w symbole, to będziesz mógł je animować, tak jak robi się to z wszystkimi innymi klonami symboli. Dzięki temu możliwe staje się tworzenie tytułów i bannerów reklamowych, które nie tylko dynamicznie zmieniają zawartość, ale także przesuwają się po ekranie, obracają i zmieniają swoje rozmiary. Wyobraź sobie na przykład sterowiec z przyczepioną do jego boku tablicą wyników, podróżujący wzdłuż sceny. Jeśli wykorzystasz ową tablicę jako blok dynamicznego tekstu, będziesz mógł uaktualniać wynik lub wyświetlać komunikaty za każdym następnym przelotem sterowca. W podobny sposób można przygotować monitor notowań giełdowych, z cenami akcji przesuwającymi się wzdłuż ekranu. Jeszcze inny przykład to gra, w której status gracza jest wyświetlany obok symbolizującej go ikony, nawet jeśli przemieszcza się ona po scenie.

W celu utworzenia przemieszczającego się
bloku dynamicznego tekstu:

  1. Wybierz narzędzie tekstowe (Text Tool) i utwórz blok tekstowy.

  1. Na palecie Text Options wybierz z kolejnych menu rozwijanych opcje Dynamic Text oraz Single Line. Wprowadź nazwę zmiennej (Variable) i osadź wszystkie potrzebne fonty (rys. 10.23).

  2. Z głównego paska menu wybierz Insert/Convert to Symbol. Nazwij swój symbol i w oknie dialogowym, które się pojawi, wybierz Graphic w typie Behavior. Kliknij OK.

Flash umieści blok dynamicznego tekstu wewnątrz symbolu graficznego i wprowadzi jego klon na scenę.

0x01 graphic

Rys. 10.23. Zmienną dynamicznego tekstu nazwij display i osadź w pliku wszystkie fonty

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 10.24. Do listwy czasowej klipu filmowego tablicy wyników (blimp scoreboard) dołącz animowany klon symbolu graficznego, zawierającego dynamiczny tekst. Grafika będzie przemieszczać się po scenie wraz z maską tablicy wyników

0x01 graphic

Rys. 10.25. Nazwij blok tekstu pobieranego message (komunikat)

0x01 graphic

Rys. 10.26. Przypisz zmienną dynamicznego tekstu o nazwie display do zmiennej tekstu pobieranego, nazwanej message

  1. Zaznacz klon symbolu graficznego i wybierz Insert/Convert to Symbol. Nazwij symbol i w oknie dialogowym, które się pojawi, wybierz Movie Clip w typie Behavior. Kliknij OK.

Flash umieści symbol graficzny wewnątrz symbolu klipu filmowego i wprowadzi jego klon na scenę.

  1. Za pomocą pola Name palety Instance nadaj nazwę dla klonu klipu filmowego.

  2. Przejdź do trybu edycji symbolu twojego klipu filmowego. Klip ten zawiera teraz klon symbolu graficznego, w którym z kolei umieszczony jest blok dynamicznego tekstu.

  3. Utwórz sekwencję animacji ruchu klonu symbolu graficznego przemieszczającego się po scenie (rys. 10.24).

  4. Wróć do głównej listwy czasowej. Wybierz narzędzie tekstowe (Text Tool) i utwórz kolejny blok tekstowy poniżej klonu klipu filmowego.

  5. Na palecie Text Options wybierz opcje Input Text i Single Line. Wprowadź nazwę zmiennej (Variable) dla tego bloku tekstowego (rys. 10.25).

  6. Zaznacz klon klipu filmowego i otwórz paletę akcji. Wybierz Actions/onClipEvent, a następnie zdarzenie EnterFrame.

  7. Wybierz Actions/set variable. W polu Variable wprowadź ścieżkę dostępu do zmiennej tekstu dynamicznego. W polu Value wprowadź ścieżkę dostępu do zmiennej tekstu pobieranego. Zaznacz pole wyboru Expression obok pola Value (rys. 10.26).

Blok dynamicznego tekstu będzie teraz nieustannie uaktualniany stosownie do zawartości bloku tekstu pobieranego.

  1. 0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    Przetestuj film.

Informacja wprowadzona przez użytkownika do bloku tekstu pobieranego zostanie przypisana do bloku tekstu dynamicznego, zawierającego się w animacji klipu filmowego. Uaktualniony tekst będzie przesuwał się po scenie (rys. 10.27).

Wskazówki

  • Umieść blok dynamicznego tekstu wewnątrz klipu filmowego i kontroluj jego wygląd za pomocą ActionScript. Użyj akcji setProperty do modyfikowania właściwości klipu filmowego - np. rotacji, przezroczystości, umiejscowienia - a położenie i wygląd bloku tekstowego będą się zmieniać odpowiednio do wybranych ustawień.

  • Pamiętaj, żeby dołączać wszystkie fonty w przypadku dynamicznego tekstu, który ma być animowany, lub który jest częścią maskowanej warstwy. Jeśli tego nie zrobisz, blok tekstowy nie będzie animowany we właściwy sposób albo zostanie przykryty maską.

0x01 graphic

Rys. 10.27. Blok dynamicznego tekstu (u góry) wyświetla animację dowolnego tekstu wprowadzonego przez użytkownika do bloku tekstu pobieranego (u dołu)

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x01 graphic

Rys. 10.28. Właściwość scroll określa pierwszą widoczną linię tekstu

Kontrolowanie przewijania bloku tekstowego

Jeśli informacja wprowadzana do bloku tekstu dynamicznego lub pobieranego przekracza zdefiniowane rozmiary bloku, Flash zaczyna przewijać tekst, dzięki czemu aktualnie edytowany fragment może być widoczny. Linie tekstu, które nie mieszczą w wyznaczonym obszarze, mogą być ukryte przed wzrokiem odbiorcy, ale mimo to pozostają dla niego dostępne - wystarczy kliknąć wewnątrz bloku tekstowego i przenieść kursor w górę lub w dół. Można też dynamiczne wyświetlać różne linie tekstu, ukryte lub nie, kontrolując pozycję pierwszej widocznej linii tekstu w bloku tekstowym. Umożliwiająca to właściwość nosi nazwę scroll (przewijanie). Górna linia przyjmuje wartość 0 i zmienia się wraz z przewijaniem nowych linii tekstu w górę lub w dół (rys. 10.28).

Flash pozwala ci na odczytanie wartości właściwości scroll, dzięki czemu wiesz, na którą dokładnie linię tekstu aktualnie patrzy odbiorca filmu. Możliwe jest również modyfikowanie wartości właściwości scroll i tym samym wymuszanie na odbiorcy obejrzenia określonej linii tekstu. Zwykle tworzy się interfejs w ten sposób, żeby użytkownik mógł sam decydować o przewijaniu tekstu, podobnie jak kontroluje paski przewijania w przeglądarce czy dowolnym innym oknie na ekranie monitora. W poniższym ćwiczeniu utworzysz taki właśnie interfejs.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
W celu utworzenia
przewijanego bloku tekstu
pobieranego:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie, tworząc w ten sposób blok tekstowy.

  1. Na palecie Text Options, zaznacz opcje Input Text oraz Multiline w kolejnych menu rozwijanych. Zaznacz pola wyboru Border/Bg i Word wrap. W polu Variable wpisz nazwę bloku tekstu pobieranego (rys. 10.29).

  2. Utwórz symbol przycisku w kształcie strzałki zwróconej w górę. Umieść klon przycisku na scenie.

  3. Umieść na scenie kolejny klon przycisku i wybierz Modify/Transform/Flip Vertical, dzięki czemu druga strzałka skierowana będzie w dół. Wyrównaj obydwa przyciski w pionie, ustawiając je obok bloku tekstu pobieranego (rys. 10.30).

  4. Zaznacz przycisk strzałki w górę i otwórz paletę akcji. Wybierz Actions/on. Zaznacz zdarzenie Press.

  5. Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej pressing (naciskanie). W polu Value wpisz wartość logiczną true (prawda). Zaznacz pole wyboru Expression obok pola Value.

  6. Ponownie wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej movement (ruch). W polu Value wpisz cyfrę -1 i zaznacz pole wyboru Expression (rys. 10.31).

Po naciśnięciu klawisza myszy zmienna pressing przyjmie wartość true, a zmienna movement wartość -1.

  1. Wybierz Actions/on. Zaznacz zdarzenie Release.

0x01 graphic

Rys. 10.29. Nazwij blok tekstu pobieranego scrollwindow (okno przewijane)

0x01 graphic

Rys. 10.30. Umieść dwa przyciski obok bloku tekstu pobieranego

0x01 graphic

Rys. 10.31. Kliknięcie przycisku strzałki do góry przypisuje zmiennej pressing wartość true i zmiennej movement wartość -1

0x08 graphic
0x01 graphic

Rys. 10.32. Zwolnienie przycisku strzałki w górę przypisuje zmiennej pressing wartość false

0x01 graphic

Rys. 10.33. Kompletny skrypt dla przycisku strzałki w dół, tak jak jest widoczny w oknie skryptu palety akcji

0x01 graphic

Rys. 10.34. Akcje przypisane do klipu filmowego dodają wartość zmiennej movement do właściwości scroll bloku tekstowego scrollwindow, jeśli zmienna pressing ma wartość true

0x01 graphic

Rys. 10.35. Przyciski po prawej zwiększają lub zmniejszają wartość właściwości scroll bloku tekstu pobieranego

  1. Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej pressing. W polu Value wpisz wartość logiczną false (fałsz) i zaznacz pole wyboru Expression.

Po zwolnieniu klawisza myszy zmienna pressing przyjmie wartość false (rys. 10.32).

  1. Zaznacz przycisk strzałki w dół i wprowadź te same wyrażenia w oknie skryptu palety akcji, z wyjątkiem przypisania do zmiennej movement wartości 1 w momencie naciśnięcia klawisza myszy (rys. 10.33).

  2. Zaznacz obydwa przyciski i wybierz Insert/Convert to Symbol. Wprowadź nazwę symbolu i wybierz opcję Movie Clip w typie Behavior. Kliknij OK.

Utworzone klawisze strzałek zostaną wprowadzone do symbolu klipu filmowego. Klon klipu pozostanie na scenie.

  1. Zaznacz klon klipu filmowego zawierającego dwa przyciski i na palecie akcji wybierz Actions/onClipEvent. Wybierz zdarzenie EnterFrame.

  2. Wybierz Actions/if. W polu Condition wpisz:

this.pressing == true

  1. Wybierz Actions/set variable. W polu Variable wprowadź pełną ścieżkę dostępu do zmiennej tekstu pobieranego, a następnie kropkę i właściwość scroll. W polu Value wprowadź pełną ścieżkę dostępu do zmiennej tekstu pobieranego, następnie kropkę i właściwość scroll, po czym dodaj wartość zmiennej this.movement. Zaznacz pole Expression (rys. 10.34).

Flash sprawdzi, czy kliknięto któryś z przycisków. Jeśli tak, program doda wartość zmiennej movement do bieżącej wartości scroll. W przypadku wciśnięcia górnej strzałki wartość scroll zmniejszy się o 1. Jeśli to dolna strzałka została wciśnięta, wartość scroll zwiększy się o 1 (rys. 10.35).

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
Podczas gdy właściwość scroll określa pierwszą widoczną linię w bloku tekstowym, właściwość maxscroll definiuje maksymalną dozwoloną wartość właściwości scroll w tym bloku tekstowym. Oznacza ona linię u szczytu bloku w momencie, kiedy widoczna jest ostatnia w ogóle linia tekstu (rys. 10.36). Nie można zmieniać wartości maxscroll, jako że definiuje ją długość i rozmiar tekstu w bloku, ale możliwe jest odczytanie jej wartości. Przypisz wartość maxscroll do właściwości scroll, a będziesz mógł automatycznie przewinąć tekst do dolnej części bloku. Ewentualnie oblicz wartość scroll w proporcji do maxscroll i zbuduj przeciągany pasek przewijania, odzwierciedlający i kontrolujący pozycję tekstu w obrębie bloku tekstowego.

W celu przewinięcia tekstu
do końca bloku tekstowego:

  1. Kontynuując poprzednie ćwiczenie, utwórz nowy symbol przycisku i umieść jego klon na scenie.

  1. Zaznacz przycisk i otwórz paletę akcji. wybierz Actions/set variable.

  2. W polu Variable wpisz nazwę zmiennej tekstu pobieranego, kropkę i właściwość scroll. W polu Value wpisz nazwę zmiennej tekstu pobieranego, kropkę i właściwość maxscroll. Zaznacz pole wyboru Expression obok pola Value (rys. 10.37).

Po kliknięciu przycisku bieżąca wartość maxscroll zostanie przypisana do właściwości scroll bloku tekstu pobieranego. Wówczas tekst zostanie automatycznie przewinięty, dzięki czemu widoczna stanie się ostatnia linia.

0x01 graphic

Rys. 10.36. W tym przykładzie maxscroll = 4

0x01 graphic

Rys. 10.37. Wartość maxscroll jest przypisywana do właściwości scroll bloku tekstowego scrollwindow

0x08 graphic

Manipulowanie
łańcuchami znakowymi

Definiując blok tekstowy jako blok tekstu pobieranego, dajesz odbiorcy możliwość wprowadzania i edytowania informacji. Wiesz już, jak taka informacja może zostać użyta w wyrażeniach z innymi akcjami, czy też dowiązana i wyświetlana w blokach dynamicznego tekstu. Jednak, często konieczne jest przeanalizowanie tekstu, wprowadzonego przez użytkownika, przed wykorzystaniem go. Być może trzeba będzie usunąć pewne słowa lub zlokalizować określony znak czy też sekwencję znaków. Na przykład, jeśli wymagasz od odbiorcy wprowadzenia adresu
e-mail, możesz sprawdzić, czy podano adres we właściwej formie, wyszukując symbol @. Można też w podobny sposób sprawdzić numer telefonu klienta, określić numer kierunkowy na podstawie trzech pierwszych cyfr i spersonalizować zasoby odbiorcy lub listę nowości, podając lokalne zainteresowania.

Ten rodzaj sprawdzania, manipulowania i kontrolowania informacji wprowadzonej do bloku tekstu pobieranego odbywa się dzięki kombinacji obiektu selekcji (Selection) i obiektu łańcucha znakowego (String). Obiekt selekcji pozwala określić, który blok tekstowy jest aktualnie zaznaczony, a także kontrolować pozycję kursora w obrębie tego bloku. Obiekt łańcucha znakowego umożliwia odczytywanie i zmienianie właściwości informacji wprowadzonych do bloku tekstu pobieranego.

0x08 graphic
Obiekt selekcji

Obiekt selekcji odpowiada za kontrolę zaznaczenia tekstu w bloku tekstu pobieranego. W odróżnieniu od większości innych obiektów, obiekt selekcji nie potrzebuje funkcji konstruktora do przygotowania klonu, zanim będziesz mógł go użyć. Wynika to z faktu, że w filmie Flasha może istnieć naraz tylko jedna pozycja kursora lub jedno zaznaczenie (co oznacza, że w danej chwili użytkownik może wpisywać lub selekcjonować tekst tylko w jednym bloku tekstowym). Tak więc obiekt selekcji będzie zawsze odnosił się do tej jednej pozycji kursora lub zaznaczenia w bloku tekstowym tekstu pobieranego lub dynamicznego.

Metody obiektu selekcji oddziałują na dwie właściwości bloku tekstowego: określenie w łańcuchu tekstowym miejsca, w którym znajduje się kursor, oraz, ustalenie aktualnie aktywnego - inaczej zogniskowanego - bloku tekstowego. Metody obiektu selekcji wymieniono w tabeli 10.1.

Tabela 10.1. Metody obiektu selekcji

Metoda Opis

getBeginIndex()

Odczytuje indeks początku selekcji.

getEndIndex()

Odczytuje indeks końca selekcji.

getCaretIndex()

Odczytuje indeks pozycji kursora.

setSelection(beginIndex, endIndex)

Ustawia selekcję według określonych indeksów początku oraz końca.

getFocus()

Odczytuje nazwę zmiennej aktywnego w danym momencie bloku tekstowego.

setFocus(variableName)

Ustawia ogniskowanie bloku tekstowego o podanej nazwie zmiennej, dzięki czemu można odczytywać informacje o tekście zawartym w danym bloku tekstowym, jeśli istnieje kilka bloków tekstowych.

0x08 graphic
0x01 graphic

Rys. 10.38. Nazwij blok tekstu pobieranego mySelection (moje zaznaczenie)

0x01 graphic

Rys. 10.39. Nazwij blok tekstu dynamicznego myIndex (mój indeks)

Kontrolowanie selekcji wewnątrz bloków tekstowych

Istnieje możliwość kontrolowania selekcji lub pozycji kursora wewnątrz edytowalnych bloków tekstowych. Pozwala to kierować uwagę odbiorcy na określone znaki lub wprowadzane przez niego słowa, być może w celu wskazania ewentualnych błędów w pisowni. Poza tym możesz śledzić położenie kursora, podobnie jak dzięki właściwościom _xmouse i _ymouse określa się lokalizację wskaźnika myszy użytkownika.

Pozycja każdego znaku w łańcuchu znakowym jest numerowana i używana w postaci wskaźnika na potrzeby metod obiektu selekcji. Pierwszy znak otrzymuje indeks 0, następny 1, itd. Jeśli kursor nie znajduje się wewnątrz bloku tekstowego w momencie, kiedy Flash odczytuje indeks zaznaczenia, zwracana jest wartość -1.

W celu
zidentyfikowania pozycji kursora
w bloku tekstowym:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Multiline z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable). Zaznacz pola Border/Bg i Word wrap (rys. 10.38).

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia kolejnego bloku tekstowego. Na palecie Text Options, wybierz Dynamic Text oraz Multiline z kolejnych menu rozwijanych. Przydziel dla bloku dynamicznego tekstu nazwę zmiennej (Variable). Zaznacz pole Border/Bg (rys. 10.39).

  2. Zaznacz obydwa bloki tekstowe i wybierz Insert/Convert to Symbol. Nazwij symbol i wybierz opcję Movie Clip w typie Behavior. Kliknij OK.

0x08 graphic
Obydwa twoje bloki tekstowe zostaną umieszczone wewnątrz symbolu klipu filmowego, którego klon pozostanie obecny na scenie.

  1. Zaznacz klon klipu filmowego i otwórz paletę akcji. Wybierz Actions/onClipEvent. Zaznacz zdarzenie enterFrame.

  2. Wybierz Actions/set variable. Umieść kursor w polu Value i wybierz Objects/ Selection/getCaretIndex (rys. 10.40).

W polu Value pojawi się metoda getCaretIndex. Zaznacz pole Expression.

  1. Przetestuj film.

Na początku blok dynamicznego tekstu wyświetla wartość -1, z uwagi na to, iż blok tekstu pobieranego nie jest aktualnie zogniskowany. Kiedy odbiorca rozpocznie wpisywanie tekstu w bloku tekstu pobieranego, Flash uaktualni blok dynamicznego tekstu, wyświetlając pozycję kursora (rys. 10.41).

W celu zmiany selekcji
w obrębie bloku tekstowego:

  1. Kontynuując poprzednie ćwiczenie, zaznacz klon klipu filmowego i otwórz paletę akcji.

  1. Dodaj wyrażenie za akcją set variable, wybierając Actions/if.

  2. W polu Condition wpisz:

Key.isDown(Key.ENTER)

Flash sprawdzi, czy naciśnięty został klawisz Enter.

  1. Wybierz Actions/evaluate.

0x01 graphic

Rys. 10.40. Flash przypisuje pozycję kursora (caret, karetkę) zmiennej myIndex

0x01 graphic

Rys. 10.41. Bieżący indeks kursora to 12. Pierwsza litera „T” ma indeks 0. Odstęp pomiędzy wyrazami „position” i „of” ma indeks 12

0x08 graphic
0x01 graphic

Rys. 10.42. Powyższa metoda setSelection zaznacza znaki wprowadzone między parametrami beginIndex i endIndex

0x01 graphic

Rys. 10.43. Powyższa metoda setSelection zaznacza znaki wprowadzone między pierwszym znakiem i bieżącą pozycją kursora

0x01 graphic

Rys. 10.44. Użytkownik wpisuje tekst do bloku tekstu pobieranego (z lewej). Po wciśnięciu klawisza Enter, Flash automatycznie zaznacza tekst (z prawej). Indeks u dołu zmienia wartość z 30 na 31, ponieważ użycie Entera liczy się jako kolejna pozycja indeksu

  1. Umieść kursor w polu Expression i wybierz Objects/Selection/setSelection.

W polu Expression pojawi się metoda setSelection(beginIndex, endIndex)(rys. 10.42).

  1. W miejsce parametru beginIndex wpisz 0. Zmień parametr endIndex, wybierając Objects/Selection/getCaretIndex (rys. 10.43).

  2. Przetestuj film.

Kiedy użytkownik zacznie wpisywać tekst do bloku tekstu pobieranego, blok dynamicznego tekstu wyświetli indeks kursora. Po wciśnięciu klawisza Enter wywoływana jest metoda setSelection. Metoda ta powoduje zaznaczenie znaków wpisanych pomiędzy indeksem 0 (pierwszym znakiem) i bieżącą pozycją kursora, czyli zostaje zaznaczone wszystko, co użytkownik wpisał (rys. 10.44).

0x08 graphic
Ogniskowanie
bloków tekstowych

Jeśli masz na scenie wiele bloków tekstowych, musisz mieć możliwość kontrolowania, który z nich jest w danym momencie aktywny lub zogniskowany, zanim będziesz mógł odczytać albo przypisać pozycję kursora czy też selekcji. Do tego celu służą metody getFocus i setFocus obiektu selekcji.

Metoda getFocus zwraca łańcuch znakowy zawierający bezwzględną ścieżkę dostępu do bloku tekstowego, korzystając z instrukcji _level0. Przykładowo, jeśli aktualnie zaznaczony blok tekstowy o nazwie twojeImię znajduje się w głównej listwie czasowej, a ty wywołasz metodę getFocus, zostanie zwrócona następująca wartość:

"_level0.twojeImię"

Musisz zapamiętać, że zwracana wartość jest łańcuchem znakowym, a użyto instrukcji _level0. Jeśli przyrównasz wartość getFocus do ścieżki, używając _root lub this, ewentualnie zapomnisz o znaku cudzysłowu, Flash nie rozpozna ścieżki. Jeśli na scenie nie ma aktualnie zogniskowanego bloku tekstowego, metoda getFocus zwraca wartość null (nic).

Podobnie jak getFocus, również metoda setFocus wymaga użycia łańcucha znakowego i bezwzględnej ścieżki dostępu do bloku tekstowego. Możesz jednak w tym wypadku korzystać z instrukcji _level0 lub _root.

W kolejnym ćwiczeniu utworzysz kilka bloków tekstu pobieranego. W zależności od tego, który blok tekstowy wybierze użytkownik, blok dynamicznego tekstu będzie wyświetlał odpowiedni komunikat.

0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

Rys. 10.45. Utwórz trzy bloki tekstu pobieranego (pokazano tu wygląd palety Text Options dla środkowego bloku) (u góry) i jeden blok dynamicznego tekstu (u dołu)

0x01 graphic

Rys. 10.46. Jeśli metoda getFocus zwraca wartość null, to znaczy, że żaden z bloków tekstowych nie został zogniskowany

W celu zogniskowania
bloku tekstowego:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Single Line z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable).

  1. Ponownie wybierz narzędzie tekstowe (Text Tool) i utwórz kolejne dwa bloki tekstu pobieranego. Przydziel każdemu z nich unikalną nazwę zmiennej.

  2. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia czwartego bloku tekstowego. Na palecie Text Options, wybierz Dynamic Text oraz Multiline z kolejnych menu rozwijanych. Zaznacz pole Word wrap. Wprowadź nazwę zmiennej dla bloku dynamicznego tekstu (rys. 10.45).

  3. Zaznacz wszystkie bloki tekstowe i wybierz Insert/Convert to Symbol. Wpisz nazwę symbolu i wybierz opcję Movie Clip w typie Behavior, po czym kliknij OK.

Utworzone bloki tekstowe zostaną umieszczone w symbolu klipu filmowego, którego klon pozostanie obecny na scenie.

  1. Nazwij klip filmowy za pomocą pola Name palety Instance.

  2. Mając zaznaczony klon klipu filmowego, otwórz paletę akcji. Wybierz Actions/onClipEvent. Zaznacz zdarzenie enterFrame.

  3. Wybierz Actions/if.

  4. Mając kursor w polu Condition, wybierz Objects/Selection/getFocus. W polu Condition pojawi się metoda getFocus.

  5. Dopisz w polu Condition == null (rys. 10.46).

Flash sprawdzi, czy użytkownik nie zaznaczył któregoś z bloków tekstowych.

  1. 0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej bloku dynamicznego tekstu. W polu Value wpisz treść komunikatu nakazującego odbiorcy zaznaczyć blok tekstowy (rys. 10.47).

  2. Wybierz Actions/else if. W polu Condition wybierz metodę getFocus i przyrównaj zwracaną przez nią wartość do ścieżki dostępu do zmiennej pierwszego bloku tekstu pobieranego (rys. 10.48).

  3. Wybierz Actions/set variable. Przypisz zmiennej dynamicznego tekstu komunikat zawierający instrukcje dla użytkownika (rys. 10.49).

  4. Dodaj kolejne dwa warunki else if i ustal, żeby blok dynamicznego tekstu zmieniał swoją zawartość w momencie spełnienia każdego z warunków. Kompletny skrypt powinien wyglądać jak na rys. 10.50.

  5. Przetestuj film.

Kiedy użytkownik ogląda film Flasha po raz pierwszy, żaden z bloków tekstowych nie jest zogniskowany, ale komunikat wyświetlany w bloku dynamicznego tekstu mówi mu, co ma zrobić. Jeśli odbiorca zaznaczy blok tekstowy, Flash natychmiast rozpozna, o który blok chodzi (rys. 10.51).

0x01 graphic

Rys. 10.51. Dla każdego zogniskowanego bloku tekstowego pojawia się inny komunikat. Powyższy przykład ilustruje sytuację, kiedy żaden z bloków nie jest aktywny (u góry) oraz kiedy zogniskowano górny blok tekstowy (u dołu)

0x01 graphic

Rys. 10.47. Komunikat wpisany do pola Value pojawi się w bloku dynamicznego tekstu o nazwie display

0x01 graphic

Rys. 10.48. Flash sprawdza, czy blok tekstu pobieranego o nazwie name, umieszczony w klipie filmowym myMovieClip, jest aktualnie zaznaczony

0x01 graphic

Rys. 10.49. Komunikat wpisany w polu Value pojawia się w bloku dynamicznego tekstu o nazwie display

0x01 graphic

Rys. 10.50. Kompletny skrypt zawiera wayrażenia warunkowe dla każdego zogniskowanego bloku tekstowego

0x08 graphic
0x01 graphic

Rys.10.52. Poniżej pierwszego warunku else if wstaw warunek sprawdzający, czy wciśnięto klawisz Enter

0x01 graphic

Rys. 10.53. Ta metoda setFocus ogniskuje blok tekstu pobieranego o nazwie address (adres), rezydujący w klipie filmowym myMovieClip

0x01 graphic

Rys. 10.54. Kompletny skrypt zawiera warunki niezbędne do zogniskowania następnego bloku tekstu pobieranego po wciśnięciu klawisza Enter

W celu wybrania aktywnego
bloku tekstowego:

  1. Kontynuując poprzednie ćwiczenie, zaznacz klon klipu filmowego i otwórz paletę akcji.

  1. Zaznacz pierwsze wyrażenie else if. Dopisz poniżej wyrażenie if. W polu Condition wpisz:

Key.isDown (Key.ENTER)

Jest to instrukcja, która nakazuje Flashowi sprawdzić, czy użytkownik nacisnął klawisz Enter w momencie, kiedy pierwszy blok tekstowy jest zogniskowany (rys. 10.52).

  1. Wybierz Actions/evaluate. Mając kursor w polu Expression, wybierz Objects/Selection/setFocus.

W polu Expression pojawi się metoda setFocus, z podświetlonym parametrem variableName.

  1. W miejsce parametru variableName wprowadź bezwzględną ścieżkę dostępu do zmiennej drugiego bloku tekstu pobieranego, używając znaku cudzysłowu (rys. 10.53).

Flash zogniskuje teraz następny blok tekstowy.

  1. Kontynuuj dodawanie wyrażeń warunkowych i metod setFocus dla pozostałych dwóch linii skryptu else if (rys. 10.54).

  2. Przetestuj film.

Kiedy użytkownik wprowadzi tekst do pierwszego bloku tekstu pobieranego i wciśnie klawisz Enter, Flash zogniskuje następny blok tekstu pobieranego, dzięki czemu użytkownik będzie mógł kontynuować wprowadzanie informacji bez potrzeby klikania odpowiedniego bloku w celu jego uaktywnienia. Użyj przedstawionej metody przygotowania interfejsu kontroli zaznaczania bloków tekstowych za pomocą klawisza Tab.

0x08 graphic
Obiekt łańcucha znakowego

Metody i właściwości można przypisać do obiektu łańcucha znakowego w celu analizowania i manipulowania danymi znakowymi. Obiekt łańcucha może powiedzieć ci np., gdzie znajduje się określony znak, czy też jaki znak znajduje się na wskazanej pozycji. Możliwe jest także wycięcie fragmentu łańcucha (nazywanego podłańcuchem) i wstawienie go do innego, jak również wiązanie łańcuchów i podłańcuchów. Obiekt łańcucha znakowego pozwala zmieniać fragmenty łańcucha znakowego na pisane wielkimi lub małymi literami. Różne metody i właściwości tego typu obiektu przedstawiono w tabeli 10.2.

Wszystkie te operacje z poprawianiem i przestawianiem łańcuchów znakowych możesz wykonywać bez wcześniejszego utworzenia klonu obiektu łańcucha znakowego. Flash robi to automatycznie, tworząc tymczasowy obiekt łańcucha znakowego, który po wykonaniu metody jest usuwany.

Podobnie jak w przypadku obiektu selekcji, indeksy obiektu łańcucha znakowego są tworzone na podstawie pozycji znaku w łańcuchu. Pierwszy znak otrzymuje indeks 0, drugi indeks 1, itd.

Wskazówka

  • Możesz użyć funkcji String w celu dokonania konwersji wartości dowolnej zmiennej, wyrażenia lub obiektu na łańcuch znakowy, zanim wykonane zostaną metody obiektu łańcucha znakowego. Przykładowo, jeśli twoja zmienna przyciskWyboru jest zmienną boole'owską, to wyrażenie

String (przyciskWyboru)

zwraca łańcuch znakowy true (prawda) lub false (fałsz). Od teraz znaki te mogą podlegać manipulowaniu za pomocą metod obiektu łańcucha znakowego.

Tabela 10.2. Metody i właściwości obiektu łańcucha znakowego

Metoda lub właściwość Opis

indexOf(searchString, fromIndex)

Przeszukuje łańcuch znakowy i zwraca miejsce wystąpienia po raz pierwszy podłańcucha wskazanego parametrem searchString. Opcjonalny parametr fromIndex określa punkt rozpoczęcia przeszukiwania.

lastIndexOf(searchString, fromIndex)

Przeszukuje łańcuch znakowy i zwraca miejsce wystąpienia po raz ostatni podłańcucha wskazanego parametrem searchString. Opcjonalny parametr fromIndex określa punkt rozpoczęcia przeszukiwania.

charAt(index)

Zwraca znak znajdujący się na pozycji wskazanej indeksem.

substring(indexA, indexB)

Zwraca łańcuch znakowy, którego pozycję wyznaczają parametry indexA i indexB.

substr(start, length)

Zwraca łańcuch znakowy o podanej długości, zaczynający się od indeksu start.

concat(string1,...,stringN)

Wiąże wskazane łańcuchy.

toLowerCase()

Zamienia znaki w łańcuchu na pisane małą literą.

toUpperCase()

Zamienia znaki w łańcuchu na pisane wielką literą.

length

Właściwość zwracająca długość łańcucha.

0x08 graphic
0x01 graphic

Rys. 10.55. Nazwij blok tekstu pobieranego myString (mój łańcuch)

0x01 graphic

Rys. 10.56. Przypisz metodę indexOf do bloku myString

0x01 graphic

Rys. 10.57. Metoda indexOf sprawdza blok myString w poszukiwaniu znaku % i podstawia jego indeks do zmiennej characterPosition (pozycja znaku)

Analizowanie łańcuchów znakowych za pomocą obiektu łańcucha znakowego

Użyj metod obiektu łańcucha znakowego do zidentyfikowania znaku lub znaków w tym łańcuchu. Poniższe ćwiczenia ilustrują sposób analizowania bloków tekstu pobieranego w celu sprawdzenia, czy użytkownik wprowadził pożądaną informację.

W celu
zidentyfikowania pozycji znaku:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Single Line z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable) (rys. 10.55).

  1. Utwórz symbol przycisku i umieść jego klon na scenie. Zaznacz go i otwórz paletę akcji.

  2. Wybierz Actions/set variable.

  3. W polu Variable wpisz nazwę zmiennej. W polu Value wpisz nazwę zmiennej bloku tekstu pobieranego. Następnie, mając kursor w polu Value, wybierz Objects/String/ indexOf.

Metoda indexOf pojawi się za zmienną tekstu pobieranego. Podświetlone zostaną argumenty searchString i fromIndex. Parametr searchString służy do określenia znaku, który chcesz zidentyfikować w łańcuchu. Parametr fromIndex jest punktem początkowym łańcucha - jest to parametr opcjonalny (rys. 10.56).

  1. W miejsce parametru searchString wpisz znak, który ma być wyszukany. Upewnij się, że wpisałeś go w cudzysłowie. Usuń parametr fromIndex. Zaznacz pole wyboru Expression obok pola Value (rys. 10.57).

0x08 graphic
Kiedy użytkownik wprowadzi tekst do bloku tekstu pobieranego i kliknie utworzony przycisk, Flash sprawdzi tekst w poszukiwaniu wskazanego znaku i przypisze jego pozycję zmiennej. Użyj tej zmiennej w metodach obiektu selekcji lub obiektu łańcucha znakowego w celu dalszego modyfikowania informacji.

Wskazówki

  • Odwrotnością metody indexOf jest metoda charAt. Zwraca ona znak zajmujący pozycję w łańcuchu o podanym indeksie. Metody tej mógłbyś użyć np. w celu sprawdzenia, czy pierwszy, drugi i trzeci znak odpowiadają numerowi kierunkowemu telefonu do danej miejscowości.

  • Jeśli poszukiwany znak, oznaczony parametrem indexOf, występuje w łańcuchu znakowym więcej niż raz, Flash zwróci tylko indeks pozycji, na której ten znak występuje po raz pierwszy. Użyj metody lastIndexOf do odczytania miejsca ostatniego wystąpienia tego znaku.

  • Gdybyś chciał wyszukać wszystkie miejsca występowania określonego znaku, musisz użyć wielu iteracji metody indexOf. Wykorzystaj przy tym opcjonalny parametr fromIndex, który rozpoczyna wyszukiwanie od wskazanego indeksu. Wyobraź sobie np., że zmienna wejściowa zawiera łańcuch znakowy „home/images/vacation”. Następnie przypisz skrypt:

slash1 = input.indexOf ("/");

slash1 = input.indexOf ("/", slash1+1);

Pierwsze wyrażenie przypisuje zmienną slash1 do miejsca pierwszego wystąpienia symbolu ukośnika w łańcuchu znakowym wprowadzonej informacji (slash1 = 4). Drugie wyrażenie ponownie wyszukuje symbol ukośnika, ale zaczynając od znaku stojącego za pierwszym napotkanym ukośnikiem (przy indeksie 5 lub literze „i” w słowie „images”). Konstruując pętle while lub do while, możesz zmusić Flasha do przeszukania całego łańcucha, zaczynając za każdym razem od ostatniego miejsca wystąpienia znaku. Powtarzaj czynność, dopóki wartość zwracana metody indexOf nie będzie równa wartości metody lastIndexOf.

0x08 graphic
0x01 graphic

Rys. 10.58. Nazwij blok tekstu pobieranego yourEmail (twój e-mail)

0x01 graphic

Rys. 10.59. Nazwij blok tekstu dynamicznego display (ekran)

Jeśli Flash przeszukuje łańcuch znakowy z użyciem metod indexOf lub lastIndexOf i nie znajduje wskazanego znaku, zwracana jest wartość -1. Można wykorzystać tę właściwość do wyszukiwania brakujących znaków w łańcuchu. Przykładowo, jeśli indexOf("%") == -1, to wiadomo, że symbolu procentu brakuje w łańcuchu znakowym. W kolejnym ćwiczeniu sprawdzimy zmienną wprowadzonego tekstu w poszukiwaniu symbolu @ oraz kropki, aby przekonać się, czy adres e-mail został wpisany poprawnie.

W celu sprawdzenia bloku tekstowego w poszukiwaniu brakującego znaku:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Single Line z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable) (rys. 10.58).

  1. Ponownie wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia kolejnego bloku tekstowego. Na palecie Text Options, wybierz Dynamic Text oraz Multiline z kolejnych menu rozwijanych. Zaznacz pole Word wrap. Przydziel dla bloku tekstu dynamicznego nazwę zmiennej (Variable) (rys. 10.59).

  2. Utwórz symbol przycisku i umieść jego klon na scenie, pomiędzy dwoma blokami tekstowymi. Zaznacz przycisk i otwórz paletę akcji.

  3. Na palecie akcji wybierz Actions/if.

  4. W polu Condition wpisz nazwę zmiennej bloku tekstu pobieranego. Mając kursor w polu Condition, wybierz Objects/ Objects/String/indexOf. Za zmienną bloku tekstu pobieranego pojawi się metoda indexOf, z podświetlonymi argumentami searchString i fromIndex.

  1. 0x08 graphic
    W miejsce parametru searchString wpisz symbol "@". Upewnij się, że dołączyłeś cudzysłów. Usuń parametr fromIndex. Flash sprawdzi blok tekstu pobieranego w poszukiwaniu symbolu @.

  2. Uzupełnij do końca wyrażenie warunkowe. Powinno ono wyglądać tak:

yourEmail.indexOf ("@") == -1

Ten warunek sprawdza, czy symbol @ nie jest obecny w zmiennej yourEmail (rys. 10.60).

  1. W tym samym polu Condition wpisz operator logiczny OR, ||.

  2. Dodaj drugi warunek, sprawdzający, czy znak kropki (.) nie jest obecny w zmiennej:

yourEmail.indexOf (".") == -1

  1. Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej bloku dynamicznego tekstu. W polu Value wprowadź komunikat informujący odbiorcę o zaistniałym błędzie w pisowni (rys. 10.61).

  2. Wybierz Actions/else. Następnie wybierz Actions/set variable. Przypisz dodatkowy komunikat do zmiennej dynamicznego tekstu, będący podziękowaniem za podanie adresu e-mail (rys. 10.62).

  3. Przetestuj film. Kiedy użytkownik kliknie przycisk po wprowadzeniu adresu e-mail do bloku tekstu pobieranego, Flash sprawdzi łańcuch znakowy w poszukiwaniu symbolu @ i kropki, a następnie zwróci ich indeksy. Jeśli któryś z indeksów będzie miał wartość -1, użytkownik zobaczy komunikat informujący o podaniu nieprawidłowego adresu. W przeciwnym wypadku, wyświetlony zostanie komunikat z podziękowaniem (rys. 10.63).

0x01 graphic

Rys. 10.60. Warunek zostanie spełniony, jeśli w zmiennej yourEmail nie pojawi się symbol @

0x01 graphic

Rys. 10.61. Komunikat wpisany w polu Value pojawi się w bloku dynamicznego tekstu o nazwie display

0x01 graphic

Rys. 10.62. Ten komunikat pojawi się w bloku dynamicznego tekstu o nazwie display w przypadku niespełnienia warunku

0x01 graphic

Rys. 10.63. Wprowadzenie nieprawidłowego adresu e-mail w bloku tekstu pobieranego powoduje wyświetlenie ostrzeżenia bloku dynamicznego tekstu (u góry). Wpisanie adresu zawierającego Symbol @ oraz kropkę powoduje wyświetlenie w bloku dynamicznego tekstu komunikatu z podziękowaniem (u dołu)

0x08 graphic
0x01 graphic

Rys. 10.64. Flash sprawdza, czy nie brakuje symbolu @, kropki, a także ustala, czy blok tekstu pobieranego o nazwie yourEmail jest pusty

  1. Dodaj trzeci warunek, sprawdzający długość łańcucha. Stosowne wyrażenie powinno wyglądać tak:

yourEmail.length == 0

Kiedy użytkownik kliknie przycisk, Flash sprawdzi długość łańcucha znakowego w bloku tekstu pobieranego i ustali, czy cokolwiek zostało wpisane (rys. 10.64).

Wskazówka

  • Użyj metod indexOf lub lastIndexOf w celu odszukania znaku lub sekwencji znaków. Jeśli jako argument wprowadzisz łańcuch znakowy, np. indexOf (".org"), Flash zwróci indeks miejsca pierwszego wystąpienia sekwencji .org w łańcuchu.

Obiekt łańcucha znakowego posiada jedną właściwość, length, określającą liczbę znaków w łańcuchu. Jest to właściwość tylko do odczytu, użyteczna do sprawdzania względnego umiejscowienia znaków. Na przykład, budując interfejs internetowego sklepiku z blokami tekstu pobieranego do podawania cen, możesz sprawdzać wprowadzany tekst w celu ustalenia, czy znak kropki znajduje się trzy miejsca przed długością łańcucha, jak w wyrażeniu:

input.indexOf (".") == input.length - 3

Jeśli powyższy warunek jest spełniony, można potraktować dwie ostatnie cyfry jako część dziesiętną.

Następne ćwiczenie uzupełnia przedstawiony wcześniej proces sprawdzania poprawności wpisanego adresu e-mail. Tym razem nakażesz Flashowi upewnić się, że długość wprowadzonego łańcucha znakowego nie wynosi 0 (co oznacza, że odbiorca nic nie wpisał).

W celu sprawdzenia długości
łańcucha znakowego:

  1. Kontynuujemy poprzednie ćwiczenie, sprawdzające poprawność wpisanego adresu e-mail. Zaznacz przycisk i otwórz paletę akcji.

  1. Zaznacz wyrażenie if.

  2. W polu Condition dodaj kolejny operator logiczny ||.

0x08 graphic
Przegrupowywanie łańcuchów znakowych za pomocą
obiektu łańcucha znakowego

Kiedy już posiadasz informacje o umiejscowieniu poszczególnych znaków w łańcuchu oraz o długości samego łańcucha znakowego, możesz zaznaczyć jego część i podstawić ją do innej zmiennej. Flash umożliwia wykorzystanie wyselekcjonowanych fragmentów łańcucha wraz z innymi łańcuchami znakowymi, a odbywa się to przy użyciu metod concat, fromCharCode, slice, split, substr lub substring. Większość tych metod jest do siebie podobna. W książce omówimy tylko metody substring (pozwalającą wykorzystać zaznaczony fragment łańcucha) i concat (umożliwiającą łączenie kilku oddzielnych łańcuchów znakowych). Możesz używać kombinacji tych dwóch metod do kontrolowania informacji przepływających między blokami tekstu pobieranego i resztą elementów filmu Flasha, by na końcu trafić do bloku dynamicznego tekstu.

W celu wykorzystania wyselekcjonowanego
fragmentu łańcucha znakowego:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Multiline z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable). Zaznacz pole Word wrap (rys. 10.65).

  1. Ponownie wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia kolejnego bloku tekstowego. Na palecie Text Options, wybierz Dynamic Text oraz Multiline z kolejnych menu rozwijanych. Przydziel dla bloku tekstu dynamicznego nazwę zmiennej (Variable). Zaznacz pole Word wrap (rys. 10.66).

0x01 graphic

Rys. 10.65. Nazwij blok tekstu pobieranego inputBox

0x01 graphic

Rys. 10.66. Nazwij blok tekstu dynamicznego outputBox

0x08 graphic
0x01 graphic

Rys. 10.67. Zmienna o nazwie beginning (początek) przechowuje pozycję początkową selekcji

0x01 graphic

Rys. 10.68. Zmienna o nazwie ending (koniec) przechowuje pozycję końcową selekcji

0x01 graphic

Rys. 10.69. Metoda substring tworzy podłańcuch na podstawie zawartości zmiennej inputBox, przechowującej indeksy indexA i indexB

0x01 graphic

Rys. 10.70. Zmienna beginning wskazuje początek podłańcucha znakowego, a zmienna ending - jego koniec

  1. Utwórz symbol przycisku i umieść jego klon na scenie, pomiędzy dwoma blokami tekstowymi. Zaznacz przycisk i otwórz paletę akcji.

  2. Wybierz Action/on. Zaznacz zdarzenie Roll Over.

  3. Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej. W polu Value wybierz Objects/Selection/ getBeginIndex. Zaznacz pole wyboru Expression obok pola Value (rys. 10.67).

Do zmiennej przypisana zostanie pozycja początku selekcji.

  1. Wybierz Actions/set variable. W polu Variable wpisz nazwę kolejnej zmiennej. Umieść kursor w polu Value i wybierz Objects/Selection/getEndIndex. Zaznacz pole wyboru Expression obok pola Value (rys. 10.68).

Do zmiennej przypisana zostanie pozycja końca selekcji.

  1. Wybierz Actions/set variable. W polu Variable wpisz nazwę kolejnej zmiennej. W polu Value wpisz nazwę zmiennej tekstu pobieranego, a następnie wybierz Objects/String/substring.

Metoda substring pojawi się za zmienną tekstu pobieranego, z podświetlonymi parametrami indexA i indexB. Parametr indeXa definiuje początek sekwencji znaków, który chcesz wyciąć, a parametr indexB oznacza koniec sekwencji (rys. 10.69).

  1. W miejsce parametru indexA wpisz zmienną początku selekcji. W miejsce parametru indexB wpisz zmienną końca selekcji. Zaznacz pole wyboru Expression obok pola Value (rys. 10.70).

  2. Utwórz nowy manipulator zdarzenia, wybierając Actions/on. Zaznacz zdarzenie Release.

  1. 0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    Wybierz Actions/set variable i przypisz zmienną przechowującą wyselekcjonowany fragment łańcucha znakowego do bloku dynamicznego tekstu (rys. 10.71).

Odbiorca może teraz wpisać tekst do bloku tekstu pobieranego i zaznaczyć jego fragment. W momencie najechania myszą utworzonego przycisku - Flash zapamięta pozycję zaznaczenia i podstawi ten podłańcuch do innej zmiennej. Po kliknięciu przycisku wybrany podłańcuch znakowy pojawi się w bloku dynamicznego tekstu (rys. 10.72).

Wskazówka

  • Być może zastanawiasz się, dlaczego metody selekcji są przypisywane do zdarzenia Roll Over, zamiast zdarzenia Release. Dzieje się tak, ponieważ Flash może przechwycić informacje o pozycji kursora lub selekcji tylko z aktywnego bloku tekstowego. Jeśli odbiorca kliknie przycisk, blok tekstowy przestanie być aktywny (zogniskowany) i selekcja zniknie. Przypisanie informacji o zaznaczeniu do zdarzenia Roll Over daje pewność, że selekcja zostanie wykonana przed jej usunięciem.

0x01 graphic

Rys. 10.71. Zmienna outputBox wyświetla zawartość zmiennej selectedString (zaznaczony fragment łańcucha)

0x01 graphic

Rys. 10.72. Zaznaczony fragment „sentence here” (u góry) jest przenoszony do podłańcucha i wyświetlany w bloku dynamicznego tekstu poniżej przycisku (u dołu)

Usprawnienie weryfikacji adresu e-mail za pomocą metody substring

Możesz wykorzystać metodę substring w poprzednim ćwiczeniu w celu usprawnienia wyświetlania informacji zwrotnej. Przykładowo, zamiast ogólnego podziękowania po wprowadzeniu poprawnego adresu, możesz wyświetlić informację spersonalizowaną na podstawie znaków następujących po symbolu @. Twoje podziękowanie będzie wtedy skierowane do nazwy użytkownika, która najczęściej jest jego imieniem lub

pseudonimem. Ustaw zmienną bloku dynamicznego tekstu w następujący sposób:

"Thank you, " + yourEmail.substring (0,

(yourEmail.indexOf("@"))) + ", we'll contact you soon."

Podłańcuch zwróci selekcję fragmentu pomiędzy pierwszym znakiem (indeks 0) i symbolem @.

0x08 graphic
0x01 graphic

Rys. 10.73. Stwórz trzy bloki tekstu pobieranego

0x01 graphic

Rys. 10.74. Nazwij blok dynamicznego tekstu display (wyświetlacz)

Za pomocą metody concat możesz połączyć wycięte łańcuchy znakowe w bardziej użyteczny sposób. Parametry metody concat są indywidualnymi wyrażeniami (oddzielonymi przecinkami), które możesz łączyć. Metoda concat ma takie samo działanie jak operator dodawania (+), który omawialiśmy wcześniej w tym rozdziale. Na przykład, poniższe dwa wyrażenia są względem siebie równorzędne:

"Hello, ".concat (firstName, " ", lastName);

"Hello, " + firstName + " " + lastName;

W celu połączenia dwóch
oddzielnych łańcuchów znakowych:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Multiline z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable). Zaznacz pole Word wrap.

  1. Ponownie wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia jeszcze dwóch bloków tekstowych, z ustawieniami jak wyżej. Nadaj poszczególnym blokom różne nazwy (rys. 10.73).

  2. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia czwartego bloku tekstowego. Na palecie Text Options, wybierz Dynamic Text oraz Multiline z kolejnych menu rozwijanych. Zaznacz pole Word wrap. Przydziel dla bloku tekstu dynamicznego nazwę zmiennej (Variable) (rys. 10.74).

  3. Utwórz symbol przycisku i umieść jego klon na scenie. Zaznacz go i otwórz paletę akcji.

  1. 0x08 graphic
    Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej bloku dynamicznego tekstu. W polu Value wpisz nazwę zmiennej pierwszego bloku tekstu pobieranego. Na koniec wybierz Objects/String/concat.

Metoda concat pojawi się w polu Value, zaraz za zmienną pierwszego bloku tekstu pobieranego. Zobaczysz podświetlone parametry string1 i stringN. Przedstawiają one wartości, które mają zostać powiązane (rys. 10.75).

  1. W miejsce podświetlonych parametrów wpisz nazwy zmiennych drugiego i trzeciego bloku tekstu pobieranego, oddzielonych spacjami i przecinkami. Zaznacz pole Expression (rys. 10.76).

  2. Przetestuj film. Kiedy użytkownik wprowadzi informacje do bloków tekstu pobieranego i kliknie przycisk, Flash powiąże trzy zmienne bloków tekstu pobieranego i wyświetli je w bloku dynamicznego tekstu (rys. 10.77).

0x01 graphic

Rys. 10.75. Metoda concat wiąże wartości określone w jej parametrach ze zmienną o nazwie title (tytuł)

0x01 graphic

Rys. 10.76. Powyższa metoda concat jest ekwiwalentem wyrażenia: title + " " + firstName + " " + lastName

0x01 graphic

Rys. 10.77. Flash wiąże zawartość trzech górnych pól tekstu pobieranego w jeden łańcuch znakowy, wyświetlany w dolnym polu dynamicznego tekstu

0x08 graphic

Modyfikowanie
łańcuchów znakowych
za pomocą
obiektu łańcucha znakowego

Istnieją dwie proste metody, umożliwiające modyfikację liter łańcucha znakowego: toUpperCase oraz toLowerCase. Obydwie metody zmieniają cały łańcuch znakowy na pisany, odpowiednio, dużymi lub małymi literami. Jeśli chcesz zmodyfikować tylko wybrane litery, musisz najpierw przygotować podłańcuchy znakowe, zawierające owe wybrane przez ciebie litery, jak to omówiliśmy w poprzedniej sekcji rozdziału. Modyfikuj podłańcuchy na pisane wielkimi lub małymi literami, a następnie łącz je z powrotem za pomocą metody concat.

W celu zmiany wielkości liter
w łańcuchu znakowym:

  1. Wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia bloku tekstowego. Na palecie Text Options, wybierz Input Text oraz Single Line z kolejnych menu rozwijanych. Przydziel dla bloku tekstu pobieranego nazwę zmiennej (Variable).

  1. Ponownie wybierz narzędzie tekstowe (Text Tool) i przeciągnij nim po scenie w celu utworzenia kolejnego bloku tekstowego. Na palecie Text Options, wybierz Dynamic Text oraz Single Line z kolejnych menu rozwijanych. Przydziel dla bloku tekstu dynamicznego nazwę zmiennej (Variable).

  2. Utwórz symbol przycisku i umieść jego klon na scenie. Zaznacz go i otwórz paletę akcji.

  1. 0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    0x08 graphic
    Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej bloku dynamicznego tekstu. W polu Value wpisz nazwę zmiennej bloku tekstu pobieranego. Potem wybierz Objects/ StringtoUpperCase oraz zaznacz pole Expression. Metoda toUpperCase pojawi się w polu Value, zaraz za zmienną bloku tekstu pobieranego. Dla metody tej nie są wymagane żadne parametry, jako że jej działanie odnosi się do całego łańcucha znakowego (rys. 10.78).

  2. Przetestuj film. Kiedy użytkownik wprowadzi tekst do bloku tekstu pobieranego i kliknie przycisk, Flash zamieni wszystkie znaki łańcucha znakowego na pisane wielką literą i wyświetli rezultat tej operacji w bloku dynamicznego tekstu (rys. 10.79).

Wskazówka

  • W celu przypisania do łańcucha znakowego innego stylu, np. pogrubionego lub pochyłego, musisz zdefiniować te style w opcjach Character i Paragraph bloku dynamicznego tekstu. Wielkie i małe litery to w zasadzie odmienne znaki, a nie style, co sprawia, że trzeba modyfikować łańcuch znakowy.

0x01 graphic

Rys. 10.78. Metoda toUpperCase przekształca znaki przechowywane w zmiennej myInput na pisane wielką literą

0x01 graphic

Rys. 10.79. Rezultat wykonania metody toUpperCase jest widoczny w bloku dynamicznego tekstu o nazwie display

Rozdział 10.

338

337

Kontrolowanie tekstu

10

Kontrolowanie tekstu

Dołącza wszystkie fonty

Dołącza wzory znaków specjalnych

Typ tekstu

Tekst pobierany w fazie projektowania

Rysuje ramkę i tło

Nazwa zmiennej bloku tekstu pobieranego = Widgets

Blok tekstu dynamicznego Fahrenheit

Nazwa zmiennej bloku tekstu pobieranego = Name

Blok tekstu pobieranego Celsius

Akcja stop w ujęciu kluczowym 1.

Maksymalna liczba znaków

Nazwa zmiennej

Wprowadza formatowanie HTML

Sposób wyświetlania tekstu (ilość linii)

Uchwyt zmiany rozmiaru pola

Dołącza wybrane fonty

Tekst pobierany w czasie odtwarzania, z dołączonym fontem

Tekst pobierany w czasie odtwarzania, bez dołączonego fontu

Nazwa zmiennej bloku tekstu pobieranego = Zip

Nazwa zmiennej bloku tekstu pobieranego = State

Nazwa zmiennej bloku tekstu pobieranego = City

Nazwa zmiennej bloku tekstu pobieranego = Address

Grafika towarzysząca

Blok tekstu dynamicznego

Dołącz wszystkie wykorzystane fonty

Ujęcie kluczowe 2. z etykietą #p

Ujęcie kluczowe 7. z etykietą #b

Kryjący prostokąt

Klon symbolu graficznego zawierający blok dynamicznego tekstu

Blok dynamicznego tekstu displayMyPage

Grafika tła

Maska w warstwie 5.

Tekst pobierany

Tekst dynamiczny

Widoczny fragment tekstu w bloku

Scroll = 1

Blok tekstu pobieranego

Klon pierwszego przycisku

Klon drugiego przycisku

Widoczna część bloku tekstowego

Właściwość maxscroll

Blok dynamicznego tekstu

Żaden z bloków tekstu pobieranego nie jest aktualnie zogniskowany

Zogniskowany jest blok tekstowy name

Blok dynamicznego tekstu

Blok tekstu pobieranego inputBox

Blok tekstu dynamicznego outputBox

Blok tekstu pobieranego inputBox

Blok tekstu dynamicznego outputBox

Blok tekstu pobieranego myInput

Blok dynamicznego tekstu o nazwie display

Kontrolowanie tekstu

Tekst pobierany

Tekst pobierany

Tekst dynamiczny

Wiązanie tekstu

Wyświetlanie tekstu HTML

Wyświetlanie tekstu HTML

Animowanie dynamicznego tekstu

Przewijanie bloku tekstowego

Przewijanie bloku tekstowego

Manipulowanie łańcuchami znakowymi

Kontrolowanie selekcji

Kontrolowanie selekcji

Ogniskowanie bloków tekstowych

Ogniskowanie bloków tekstowych

Analizowanie łańcuchów znakowych

Analizowanie łańcuchów znakowych

Analizowanie łańcuchów znakowych

Przegrupowywanie łańcuchów

Przegrupowywanie łańcuchów

Modyfikowanie łańcuchów znakowych

Tekst pobierany

Tekst pobierany

Tekst dynamiczny

Wiązanie tekstu

Wiązanie tekstu

Wyświetlanie tekstu HTML

Animowanie dynamicznego tekstu

Animowanie dynamicznego tekstu

Przewijanie bloku tekstowego

Przewijanie bloku tekstowego

Obiekt selekcji

Kontrolowanie selekcji

Ogniskowanie bloków tekstowych

Ogniskowanie bloków tekstowych

Obiekt łańcucha znakowego

Analizowanie łańcuchów znakowych

Analizowanie łańcuchów znakowych

Przegrupowywanie łańcuchów

Przegrupowywanie łańcuchów

Przegrupowywanie łańcuchów

Modyfikowanie łańcuchów znakowych



Wyszukiwarka

Podobne podstrony:
r12-04(1), Informacje dot. kompa
r03-04(1), Informacje dot. kompa
r07-04(1), Informacje dot. kompa
r10-02(1), Informacje dot. kompa
r10-03(1), Informacje dot. kompa
R10-05(2), Informacje dot. kompa
R04-05(2), Informacje dot. kompa
06(1), Informacje dot. kompa
r18-05(1), Informacje dot. kompa
r08-02(1), Informacje dot. kompa
01(1), Informacje dot. kompa
r04-03(1), Informacje dot. kompa

więcej podobnych podstron