Główna| Portal| Dyskusja| Współpraca| Galerie| Informacje| Rozrywka| Technika 21 Kwiecień 2018 - 07:40
Nawigacja
Menu Główne
Portal
Dyskusja
Współpraca
Galerie
Informacje
Rozrywka
Dział Techniczny
Trafione w Galerii
Barwy jesieni 4
Barwy jesieni 4
Album Fotto
Kto jest Online
Gości Online: 3
Brak Użytkowników Online

Zarejestrowanch Użytkowników: 1,909
Najnowszy Użytkownik: zanetaagniesz
zanetaagniesz 3 dni
eliaszjedrzej 3 dni
edzio944 3 dni
paulludmila 3 dni
tomaszgromisl 4 dni
jonatalea 6 dni
leonianatalia 6 dni
dianajurand 6 dni
augustnikola 1 tydzień
anatoliajanin 2 tygodni

Posłuchaj..
Wybierz i kliknij "Graj"
Wspierają Nas



Zobacz pełną listę..

Pomóżmy!
_blank

Podstawy Action Scriptu
themes dnia 02 grudzień 2005 - 10:41:09
Niby nie ma o czym pisać… a jednak, bo, co tu dużo gadać, bez zmiennych każdy język programowania byłby bezużyteczny.

Do rzeczy.
Najogólniej rzecz biorąc zmienna to twór w którym od momentu utworzenia możesz przechowywać praktycznie co chcesz: referencje do obiektów, właściwości klipów, liczby, funkcje, tekst, ale z którego przede wszystkim możesz korzystać. Przy pomocy zmiennych i funkcji możesz zrobić co chcesz.. jeśli będziesz wiedział jak się to tego zabrać.:P

We Flash’u począwszy od wersji MX nastąpił podział zmiennych na:
- zmienne nielokalne
- zmienne lokalne
- zmienne globalne (dostępne od MX)
Poniżej przyjrzymy im się bliżej

Zmienne nielokalne

Są to zmienne utworzone na listwie czasowej danego MovieClip’a lub wewnątrz innego obiektu. Wartości zawarte w tych zmiennych są cały czas przechowywane w pamięci, do momentu, kiedy dany klip istnieje w odtwarzaczu, (czyli dopóki nie zostanie usunięty, lub nie skończy się jego występowanie na nadrzędnej listwie czasowej), albo zmienna (czy obiekt) nie zostanie usunięta przy użyciu operatora delete.
W języku ActionScript nie jest wymagane deklarowanie zmiennych nielokalnych przy użycia słowa kluczowego var. Zmienne takie są tworzone w momencie ich nazwania, czyli nadania im charakteru zmiennej:

zmienna = 100
trace(zmienna) //output 100


Do takich zmiennych mamy dostęp nie tylko z listwy bieżącego klipu, możemy się do niej odwołać również z dowolnego miejsca w filmie,

//na _root, deklarujemy zmienną nielokalną
var v = "abc"
//gdzieś na listwie czasowej zagnieżdżonego klipu
var tekst = _root.v + "def"
//lub
var tekst = _parent._parent._parent.v + "def"
trace(tekst)
//output: abcdef


Pomimo faktu, iż deklarowanie zmiennych nie wymaga użycia słowa var, to jednak używanie go w moim mniemaniu polepsza czytelność kodu i wydaje się być dobrym nawykiem.

Zmienne nielokalne można deklarować w danym obiekcie z poziomu innego (dajmy na to) MovieClip'a

//przykład
_root.jakisMC.zmienna = "hohoho"


w tym przypadku zakazane jest stosowanie slowa var.

Poniższa składnia:
var _root.jakisMC.zmienna = "hohoho"
...spowoduje błąd kompilacji.

Zmienne lokalne

Są to zmienne tymczasowe, deklarowane w ciele funkcji i wykorzystywane podczas wykonywania tej funkcji. Po zakończeniu działania funkcji zmienne takie są usuwane z i nie zaśmiecają pamięci odtwarzacza. Deklaracja takich zmiennych nie różnie się niczym od deklaracji zmiennych nielokalnych, z tą różnicą, że jeśli przy deklaracji nie dodamy słowa kluczowego var, zmienna taka zostanie utworzona jako nielokalna i po zakończeniu funkcji wciąż będzie dostępna lub zmieni wartość już istniejącej zmiennej nielokalnej o tej nazwie.

pokaz = function(){
var a = "jestem" //deklaracja zmiennej lokalnej
trace("w ciele funkcji: " + a)
}
pokaz()

trace("po zakończeniu funkcji: " + a)


w oknie output widzimy:
w ciele funkcji: jestem
po zakończeniu funkcji: undefined

Jeśli nie dodalibyśmy przy deklaracji zmiennej "a" słowa var w oknie output zobaczylibyśmy:
w ciele funkcji: jestem
po zakończeniu funkcji: jestem
W tym akurat przypadku pozostanie takiej zmiennej nie robi nam szkody, ale co jeśli w pamięci została by nam tablica służąca do obliczania jakiejś „macierzy” posiadająca 1500 indeksów, każdy składający się z 5 cyfrowej liczby?

Nie użycie słowa var może prowadzić również do nadpisywania zmiennych nielokalnych. Przykład

var a=1, b=2, c=3 //deklaracja zmiennych nielokalnych
function pokaz(){
var a=25, b=50; //deklaracja zmiennych lokalnych
c = a+b
}
pokaz()
trace(c) //output 175


Zmienna c została nadpisana.
Jeśli nie użyłbym słowa var w ciele funkcji nadpisane zostałyby również zmienne a i b .
Można jeszcze dodać, że, jak zauważyłeś, sporym ułatwieniem jest poniższy sposób deklaracji zmiennych

//np...
var a=1, b=[], c= new LoadVars();


Zmienne globalne

Są dostępne z każdego miejsca w w filmie. Deklarowanie, wywoływanie i zmiana wartości takiej zmiennej odbywa się następująco:

//deklaracja zmiennej globalnej o nazwie "variab"
_global.variab = "wartość";

//zmiana w dowolnym miejscu w filmie
_global.variab = "zupełnie inna wartość";

//wywołanie zmiennej z dowolnego miejsca w filmie, korzystając z jej wartości
mojTekst = variab;
//lub jesli na tej listwie czasowej znajduje się zmienna
// o tej samej nazwie co zmienna globalna (patrz wyjaśnienie niżej)
mojTekst = _global.variab;


Tutaj należy wspomnieć, iż jeśli na danej listwie czasowej znajduje się inna zmienna o nazwie "variab", zostanie odczytana najpierw jej wartość, kompilator nie będzie przeszukiwał obiektu globalnego w poszukiwaniu takiej zmiennej.

//przykład:
_global.variab = 5
variab = 100
var wynik = variab + 5
trace(wynik)
//w oknie output widzimy 105 zamiast "oczekiwanego" 10
//zmienna variab została odnaleziona na listwie czasowej bieżącego klipu


Ze zmiennych globalnych korzystaj, jeśli naprawdę ma to dobre uzasadnienie.

Powiązanie zmiennych.

Warto pamiętać, że zmienne powiązane są między sobą poprzez wartości nie poprzez referencje. Szybko zobaczmy taki przykład

var a = 5
var b = a
a = 10
trace(b) //output 5


Wartość b nie zmieniła się chociaż zmieniła się wartość zmiennej a. Jest to przykład powiązania zmiennych przez wartości. Kompilator nie zapamiętuje "po czym" zmienna odziedziczyla wartość. Zmienna b otrzymała wartość innej zmiennej z danej chwili i taka wartość została zapamiętana.

Odwoływanie się do zmiennych.

Pamiętaj, że do zmiennej możesz się skutecznie odwołać, jeśli takowa istnieje. Przykład:

var dodane = x+x
var x =5
trace(dodane) //output: undefined


By odwoływać się do zmiennej musisz najpierw ja utworzyć.

Typy danych

W języku ActionScript nie ma obowiązku przestrzegania typów danych przechowywanych w zmiennych. Jeśli deklarujesz zmienną w której przechowywujesz dane typu String to w dowolnej chwili możesz nadpisać tą zmienną tak by przechowywała dane typu Number lub jakiekolwiek inne.

//przykład
var angle = 270
angle = "dwieściesiedemdziesiąt"


Kompilator nie wypluje w tym przypadku, żadnego błędu.
Jednak począwszy od Flash MX2004 i wprowadzenia języka ActionScript2 istnieje możliwość kontroli typu danych przy pomocy składni

var angle:String = "dwieściesiedemdziesiąt";

Jeśli spróbujemy umieścić w tej zmiennej dane inne niż String, (np.: angle=270) kompilator nie zezwoli na taką operację.

To tyle w temacie zmiennych. Mam nadzieję, że ten artykuł rozjaśnił Ci kilka rzeczy.
Nic nie rozumiesz? Ja też kiedyś nie rozumiałem, ale nauka robi swoje.
0 Komentarzy ˇ 4287 Czytań ˇ Drukuj
Komentarze
Brak komentarzy.
Dodaj komentarz
Zaloguj się, żeby móc dodawać komentarze.
Strona Główna ˇ Download ˇ Artykuły ˇ Forum ˇ Szukaj
8558342 Unikalnych Wizyt
Powered by PHP-Fusion 2003-2007 and Matonor.de
Polecamy: | Katalog SEO Pieka |