r11-04.doc

(570 KB) Pobierz
Po prostu









11









Manipulowanie danymi

 

 



 

Części składowe języka HTML

381


















Manipulowanie danymi

Manipulowanie danymi

Informacje, które przechowujesz w zmiennych, modyfikujesz w wyrażeniach i sprawdzasz przy pomocy wyrażeń warunkowych, często muszą być dalej przetwarzane z użyciem rachunków matematycznych, takich jak potęgowanie czy obliczanie sinusa i cosinusa. Flash wykonuje podobne obliczenia, korzystając z obiektu matematycznego (Math), umożliwiającego tworzenie formuł działania interakcji pomiędzy obiektami w twoim filmie i odbiorcą, a także wzorów geometrycznych do kształtowania grafiki. Dla przykładu: posługując się obiektem matematycznym, możesz zaprojektować prawidłową trajektorię kolizji obiektów, zasymulować efekt oddziaływania sił grawitacji w samouczku do lekcji fizyki, obliczać rachunek prawdopodobieństwa w grze karcianej czy też generować liczby losowe, pozwalające wprowadzić do filmu nieprzewidywalne elementy. Większość takich informacji, którymi manipulujesz, musi być przechowywana w tablicach, jeśli chcesz uzyskać większą kontrolę nad danymi i efektywność ich wykorzystania. Tablice mogą być używane do porządkowania danych, np. w listach zakupów, tabelach koloru lub zapiskach sportowych.

Jeśli informacja, której potrzebujesz, jest uzależniona od czasu lub daty, możesz skorzystać z obiektu daty (Date) do uzyskania danych na temat bieżącego roku, miesiąca, a nawet milisekundy. Dzięki temu łatwo dołączysz do swojego filmu zegar i timer, uzyskując możliwość przesyłania do serwera informacji czasowej wraz z profilem odbiorcy.

Wykonywanie wszystkich tych procesów związanych z przetwarzaniem danych znacznie ułatwia użycie funkcji. Nauczysz się, jak budować funkcje łączące oddzielne wyrażenia i obiekty w taki sposób, aby zwiększyć ich pierwotne możliwości. Wystarczy wspomnieć tu choćby o zaprojektowaniu funkcji automatycznie dołączającej do filmu dźwięk, a następnie odtwarzającej go i ustawiającej poziom głośności lub panoramę w oparciu o podane parametry. Możliwe jest także tworzenie funkcji pozwalającej kształtować własne obiekty. Rozwijaj możliwości predefiniowanych obiektów Flasha, przygotowując sterujące nimi własne metody i właściwości. Rozdział 11. pomoże ci zrozumieć, jak posługiwać się takimi złożonymi, ale jednocześnie elastycznymi danymi. Dowiesz się również o sposobach integrowania różnych obiektów, z którymi zapoznałeś się dotychczas.


Wykonywanie obliczeń

Wykonywanie obliczeń
za pomocą obiektu matematycznego

Obiekt matematyczny pozwala na wykorzystanie funkcji trygonometrycznych, takich jak sinus, cosinus i tangens, funkcji logarytmicznych, funkcji zaokrąglania wartości liczbowych, czy wreszcie stałych matematycznych, np. Pi (3.141592) lub e (2.718281). Metody i właściwości obiektu matematycznego przedstawia tabela 11.1. Podobnie jak w przypadku obiektu Key, tak i tu nie jest potrzebne tworzenie klonu obiektu przed użyciem jego metod lub właściwości. Podobnie wszystkie właściwości obiektu matematycznego są wartościami tylko do odczytu i zapisuje się je wielkimi literami. Każda metoda jest poprzedzona wprowadzeniem obiektu Math. Na przykład, w celu obliczenia kwadratu liczby 10, napiszesz:

mojaOdpowiedz = Math.sqrt (10);

a wynik obliczenia zostanie podstawiony do zmiennej mojaOdpowiedz. Jeśli zamierzasz wykorzystać stałą, posłuż się składnią:

mojObwod = Math.PI * 2 * mojPromien;

Stała matematyczna Pi jest mnożona przez 2 i przez wartość zmiennej mojPromien, a wynik obliczenia jest podstawiany do zmiennej mojObwod.

 

 


Tabela 11.1. Metody i właściwości obiektu matematycznego

Metoda lub właściwość              Opis

abs(number)

Oblicza wartość bezwzględną (z pominięciem znaku).Wyrażenie Math.abs(-4) zwraca wartość 4.

acos(number)

Oblicza wartość cosinusa łuku

asin(number)

Oblicza wartość sinusa łuku.

atan(number)

Oblicza wartość tangensa łuku.

atan2(y, x)

Oblicza wartość kąta (w radianach) między osią x i punktem na osi y.

ceil(number)

Zaokrągla liczbę w górę do najbliższej liczby całkowitej. Wyrażenie Math.ceil (2.34) zwraca wartość 3.

cos(number)

Oblicza wartość cosinusa kąta podanego w radianach.

exp(number)

Oblicza wartość wykładnika potęgi stałej Eulera (e).

floor(number)

Zaokrągla liczbę w dół do najbliższej liczby całkowitej. Wyrażenie Math.floor (2.34) zwraca wartość 2.

log(number)

Oblicza wartość logarytmu naturalnego.

max(x, y)

Zwraca większą z dwóch porównywanych wartości. Wyrażenie Math.max (2, 7) zwraca wartość 7.

min(x, y)

Zwraca mniejszą z dwóch porównywanych wartości. Wyrażenie Math.max (2, 7) zwraca wartość 2.

pow(base, exponent)

Oblicza wartość wykładnika potęgi danej liczby.

random()

Zwraca liczbę losową z zakresu 0,0 do 1,0.

Wykonywanie obliczeń

round(number)

Zaokrągla liczbę do najbliższej wartości. Gdy część ułamkowa wartości jest mniejsza od 0,5, to funkcja zaokrągla w gół, gdy natomiast część ułamkowa wynosi 0,5 i więcej, to funkcja zaokrągla w górę. Wyrażenie Math.round (2.34) zwraca wartość 2.

sin(number)

Oblicza wartość sinusa kąta podanego w radianach.

sqrt(number)

Oblicza wartość kwadratu potęgi.

tan(number)

Oblicza wartość tangensa kąta podanego w radianach.

E

Stała Eulera; podstawa logarytmów naturalnych.

LN2

Logarytm naturalny liczby 2.

LOG2E

Logarytm Eulera podstawy równej 2.

LN10

Logarytm naturalny liczby 10.

LOG10E

Logarytm Eulera podstawy równej 10.

PI

Obwód koła podzielony przez jego średnicę.

SQRT1_2

Kwadrat potęgi liczby ½.

SQRT2

Kwadrat potęgi liczby 2.

 


Obliczanie wartości kątowych

y

x

Oś y

Oś x

Tangens kąta = przyprostokątna naprzeciwległa/przyprostokątna przyległa

Cosinus kąta = przyprostokątna przyległa/przeciwprostokątna

Sinus kąta = przyprostokątna naprzeciwległa/przeciwprostokątna

Hypotenuse (przeciwprostokątna)

Opposite (przyprostokątna naprzeciwległa)

Adjacent (przyprostokątna przyległa)

Obliczanie wartości kątowych za pomocą
obiektu matematycznego

Kąt zachowywany pomiędzy obiektem i sceną lub pomiędzy dwoma obiektami jest użyteczną informacją w tworzeniu interakcji w grach, jak też w przypadku dynamicznych animacji i interfejsów budowanych od początku do końca za pomocą języka ActionScript. Przykładowo, tworząc pokrętło regulujące poziom głośności dźwięku, musisz obliczyć kąt pomiędzy kierunkiem, w którym użytkownik przeciąga pokrętło i osią pionową lub poziomą, a następnie odpowiednio zmienić obrót pokrętła i samą głośność dźwięku. Zanim jednak przejdziesz do obliczania wartości kątowych, dobrze byłoby przypomnieć sobie poznane w szkole średniej podstawowe zasady trygonometryczne, rządzące obliczaniem sinusa, cosinusa i tangensa.

Mnemoniczna nazwa SOH CAH TOA pomaga zachować poprawność obliczania funkcji trygonometrycznych. Symbole te są akronimami wyrażeń: Sine = Opposite over Hypotenuse (sinus = przyprostokątna naprzeciwległa do przeciwprostokątnej), Cosine = Adjacent over Hypotenuse (cosinus = przyprostokątna przyległa do przeciwprostokątnej) i Tangent = Opposite over Adjacent (tangens = przyprostokątna naprzeciwległa do przyprostokątnej przyległej) (rys. 11.1). Znajomość długości dwóch dowolnych boków trójkąta prostokątnego wystarcza do obliczenia pozostałych dwóch kątów. Zwykle będziesz miał do czynienia z długościami przyprostokątnych, jako że to one właśnie reprezentują współrzędne
x i y punktu (rys. 11.2). Znając współrzędne x, y, możesz obliczyć kąt (theta) za pomocą poniższych wzorów matematycznych:

Tangens kąta = przyprostokątna naprzeciwległa/ przyprostokątna przyległa

lub

Tangens kąta = y/x

lub

Kąt = tangens łuku (y/x)

 

 

 

 

Rys. 11.1. Kąt (theta) trójkąta prostokątnego jest definiowany przez sinus, cosinus, tangens i długość trzech boków

 

 

Rys. 11.2. Punkt na scenie tworzy trójkąt prostokątny z bokami x (przyprostokątna przyległa) oraz y (przyprostokątna naprzeciwległa)

 


Obliczanie wartości kątowych

We Flashu można powyższe wyrażenia zapisać przy pomocy obiektu matematycznego w następujący sposób:

mojKat = Math.atan(this._y/this._x);

Warto dodać, że jest dostępna jeszcze łatwiejsza metoda zdefiniowania współrzędnych x, y, bez potrzeby wykonywania dzielenia. Metoda atan2 przyjmuje współrzędne x, y jako dwa argumenty, więc wyrażenie może wyglądać następująco:

mojKat = Math.atan2(this._y, this._x)

Niestety, metody trygonometryczne obiektu matematycznego wymagają – i zwracają – wartości w radianach, które opisują kąt w rozumieniu liczby stałej Pi, co jest wygodniejsze matematycznie, ale już nie tak praktyczne w momencie, gdy chcesz użyć wartości do zmodyfikowania właściwości _rotation klipu filmowego. Można jednak przekształcić wartość kątową w radianach na stopnie – i odwrotnie – za pomocą poniższych wzorów:

Radiany = Math.PI/180 * liczba_ stopni;

Stopnie = liczba_radianów * 180/ Math.PI;

Poniższe ćwiczenia demonstrują sposób obliczenia kątów przeciąganego klipu filmowego i wyświetlenia wartości w stopniach w bloku dynamicznego tekstu.

W celu obliczenia kąta
tworzonego względem sceny:

1.   Utwórz symbol klipu filmowego i umieść jego klon na scenie. Nazwij go, korzystając z pola Name palety Instance.

2.   Utwórz blok dynamicznego tekstu, w sposób opisany w rozdziale 10. Na palecie Text Options wybierz opcję Single Line i przypisz do bloku tekstowego nazwę zmiennej (Variable).

3.   Zaznacz klon klipu filmowego i otwórz paletę akcji.

 


4.  

Obliczanie wartości kątowych

5.   Wybierz Actions/onClipEvent. Zaznacz zdarzenie Load.

6.   Wybierz Actions/startDrag. W polu Target wpisz this. Zaznacz pole Expression. Zaznacz też pola Constrain to rectangle i Lock mouse to center. Wpisz 0 w polu L, 0 w polu T, szerokość sceny w polu R i wysokość sceny w polu B (rys. 11.3).

W rezultacie punkt środkowy klipu filmowego będzie podążał za wskaźnikiem myszy, a sam klip zostanie osadzony w obramowaniu wyznaczonym przez rozmiary sceny.

7.   Wybierz Actions/onClipEvent. Zaznacz zdarzenie enterFrame.

8.   Wybierz Actions/set variable. W polu Variable wpisz nazwę zmiennej, która będzie przechowywać wartość kąta w radianach. Umieść kursor w polu...

Zgłoś jeśli naruszono regulamin