Macromedia Flash

Vý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ímky

ActionScript 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řídy

Dynamické 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ěr

Pro 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.

 

Petr Rympler