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