![]() |
Macromedia FlashVýuka Flash (21.) |
Úvodem | Výuka Flash | Odkazy | Aplikace | Otázky a odpovědi |
|
V dnešním díle budeme pokračovat v poznávání novinek v ActionScript 2 a Flash MX 2004. RozhraníJako novinku v ActionScriptu 2 nalezneme stejně jako v jiných objektově orientovaných jazycích také rozhraní. Rozhraní představuje definici metod bez implementování kódu. Rozhraní se podobají třídám, avšak neobsahují vlastnosti, obsahují pouze jména metod a parametry (včetně datových typů). Deklarace rozhraní vypadá následovně: interface < název > { // Deklarace metod function metoda(parametr:< typ >):< typ >; } Jako příklad si vytvoříme rozhraní, které bude obsahovat dvě metody: interface IMovable { // Deklarace metod function Go():Void; function Stop():Void; } Nyní, když máme vytvořeno rozhraní jej můžeme implementovat. Jako příklad si ukážeme třídu "Postava". class Postava implements IMovable { // Deklarace metod function Go():Void { // kód metod } function Stop():Void { // kód metod } } Instanci třídy a volání metod můžeme vytvořit pomocí následujícího příkladu: // Vytvoří instanci var post:IMovable = new Postava(); // Volání metod post.Go(); post.Stop(); VyjímkyActionScript 2 přichází s podporou odchytávání vyjímek, které se značně podobají ostatním jazykům (C#, Java, C++ atd.). Vyjímky můžeme obsluhovat pomocí bloků try...catch...finally. V případě, že se vyskytne vyjímka (chyba) můžeme ji zpracovat (např. chybové hlášení) v bloku try...catch. Do bloku finally můžeme napsat kód, který se vykoná vždy po odchycení vyjímek. Jako příklad si uvedeme ukázku, ve které v případě, že proměnná cislo bude obsahovat hodnotu "0", tak vyvoláme chybovou hlášku. // Vytvoříme proměnnou var cislo:Number = 0; try { if (cislo == 0) { throw new Error("Musíte zadat číslo větší jak nula!"); } } catch (e) { trace(e.toString()); }finally { trace("Dokončeno"); } Pomocí konstrukce throw new Error() můžete vyvolat chybové hlašení třídy Error. Třída Error obsahuje dvě vlastnosti (message a name) a metodu toString(), pomocí které si můžeme nechat vypsat chybové hlášení. Můžeme také vytvořit odchytávání vyjímek v závislosti na tom, jaká chyba nastala. Vytvoříme si třídu NumberError (NumberError.as). class NumberError extends Error { var message = "Musíte zvolit jinou číselnou hodnotu proměnné"; } Dále vytvoříme obdobnou třídu SystemError (SystemError.as). class SystemError extends Error { var message = "Nastala chyba v systému!"; } Výsledný příklad by potom mohl vypadat následovně. // Vytvoříme proměnnou var cislo:Number = 1; try { if (cislo == 0) { throw new NumberError(); }else{ throw new SystemError(); } } catch (e:NumberError) { trace("Nastala číselná chyba"); } catch (e:SystemError) { trace("Nastala systémová chyba: "); }finally { trace("Dokončeno"); } Dynamické třídyDynamické třídy jsou speciální třídy, ve kterých můžeme vytvářet a přistupovat i k neexistujícím metodám a vlastnostem (nebyly deklarovány uvnitř třídy). Na příkladě si ukážeme třídu Auto, která bude obsahovat vlastnosti Vyska a Sirka. class Auto { var Vyska:Number; var Sirka:Number; } Nyní se pokusíme vytvořit instanci třídy a nastavit hodnoty: // Vytvoříme instanci třídy var a1:Auto = new Auto(); // Nastavíme výšku na 100 a1.Vyska = 100; // Vypíšeme hodnotu trace("Výška: " + a1.Vyska); // Nastavíme délku na 500 a1.Delka = 500; // Vypíšeme hodnotu trace("Délka: " + a1.Delka); Pokud se pokusíme tento kód spustit, tak nám kompilátor oznámí, že nemůže najít vlastnost Delka a nemůžeme do ní přiřazovat hodnoty. **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 8: There is no property with the name 'Delka'.a1.Delka = 500; **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 10: There is no property with the name 'Delka'. trace("Délka: " + a1.Delka); Total ActionScript Errors: 2 Reported Errors: 2 Ovšem pokud nyní nastavíme u třídy Auto modifikátor dynamic, tak vše bude fungovat v pořádku. dynamic class Auto { var Vyska:Number; var Sirka:Number; } ZávěrPro tento díl to bude vše. V příštím díle budeme pokračovat v poznávání ActionScriptu 2 a novinkám ve Flashi MX 2004.
|
|