Proměnná by se dala popsat jako schránka, ve které se ukládají určité hodnoty. Každá proměnná má své pojmenování (název). Máme mnoho druhů proměnných = datové typy. Do proměnné se mohou ukládat čísla, řetězce znaků (textové pole), hodnoty ano/ne a další.
Základní datové typy
Základní dělení datových typů:
textové:
typ String
-
proměnná ukládající „text“
-
řetězcové typy nebo znaky – první znak má pořadí 0
-
může obsahovat textové pole:
-
např „ahoj“
číselné:
typ Number
-
může obsahovat jakékoliv reálné číslo
typ Int
-
datový typ, který může obsahovat pouze celá čísla
typ Uint
-
může obsahovat jen kladná celá čísla
další typy:
typ Boolean
-
obsahuje logické hodnoty true nebo false („ano“ nebo „ne“)
typ pole Array
-
pole objektů (indexovaných vždy od nuly)
typ Button
typ Textfield
typ Sound
typ Loader
typ Sprite
-
podobný jako Movieclip, ale nemá časovou osu, může být pojmenovaný. Dá se užít jako kontejner grafiky.
typ Timer (časovač)
typ XML
Vytvoření (deklarace) instance datového typu
Proměnná se nejprve musí vytvořit (deklarace) – tím se actionscriptu oznámí, že je zde tato proměnná a budeme s ní pracovat a přiřadit jí nějakou hodnotu.
var jménoInstance: jménoDatovéhoTypu; //deklarace proměnné jménoInstance=hodnotaInstance; //přiřazení hodnoty proměnné **např:** var jmeno:String; jmeno=Karel;
Také můžeme vytvořit proměnnou IHNED při tom jí nastavit hodnotu:
var jménoInstance: jménoDatovéhoTypu = new jménoDatovéhoTypu(); //za rovnítkem je inicializace proměnné(volání konstruktoru) **např:** var jmeno:String = new Movieclip();
Složitější datové typy
Každý datový typ je v podstatě třídou, která má své metody a položky (proměnné a vlastnosti).
Příkladem takové třídy, která se hojně využívá je MovieClip
Přetypování
Je možné převést jeden datový typ na jiný – např. čísla na text. (Např. pro zobrazení v textovém poli.)
.toString(); převede Number na String .ValueOf(); převede String na Number
příklad:
var cislo:Number=56 text_pole.text = cislo.toString(); //převede Number na String cislo=text_pole.text.ValueOf(); // převede String na Number
syntaxe přetypování je taková, že uvedeme název typu a závorky, např.
MovieClip(názevProměnné)
Řada tříd má vestavěné metody na přetypování na String: metoda .toString().
Na řetězce se často přetypovává implicitně (tk. automaticky) ve výrazech, kde se očekává výsledek řetězec. Proto např můžeme zobrazit ve funkci trace jejímž parametrem je řetězec i hodnoty numerických proměnných – ty jsou implicitně, bez nutnosti to nějak zvlášť popisovat, převedeny na řetězec.
Tak např. v proměnnou i obsahující hodnotu typu Number úřevedeme na řetězec a spojíme s řetězcem: „hodnota proměnné i =“:
... i=i+150; trace("hodnota proměnné i =" +i); ...
Hodnota Null a undefined
Hodnotu Null má např. proměnná typu funkce, které nebyla přiřazen žádný obsah. Často se to využívá pro událostní funkce – napřonEnterFrame, které přiřadíme tuto hodnotu, když už nechceme aby se dále vykonávala. používá se např. při ošetření toho, když není proměnná dodána – aby nám program nenahlásil chybu. Html a swf
Hodnotu undefined mají proměnné, kterým nebyla přiřazena žádná počáteční hodnota.
Hodnoty undefined je možno testovat v podmínkách, např.
if (i==undefined){ něco dělěj.. }
Zákeřná hodnota NaN -not a number
Výsledkem některých numerických výrazů, kdy např. počítáme s proměnnými, kterým nebyla přiřazena žádná hodnota je hodnota NaN notr a number. Problém je, že se to automaticky neohlásí jako chyba a při testech se to normálně testuje. Tak například někde v programu numerické proměnné „k“ někde v programu přiřadíme obsah proměnné uhelNatoceni, který násobíme pěti. Napíšeme k=uhelNatocení*5 – s dlouhým ína konci! Taková proměnná ale neexistuje a hodnota výrazu uhelNatocení*5 je NaN. V Proměnné k bude uložena zákeřná hodnota NaN. Zákeřná proto, žw n ás na to program neupozorní a někde dále je hodnmota proměnné k testována v nějaké podmínce – testujeme zda k je větší než 1“ Samozřejmě není – (NaN není větší než jedna) – my o tom, že v proměnné je hodnota NaN ale nevíme a program se chvá „divně“.
Proto vždy deklarujemem typy hodnot a pracujeme, jde-li to se třídami. Budeme-li tam třeba chtít použít výraz uhelNatocení*5 s chybným í, program nás n a to upozorní, že proměnná uhelNatocení neexistuje.