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